1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-26 19:30:00 +00:00

Rewrote constant identification to allow nested arrays/structs. TODO: function-as-array

This commit is contained in:
jespergravgaard 2020-01-01 18:27:53 +01:00
parent 4af8b1a833
commit 7b81b51bc0
542 changed files with 21322 additions and 26977 deletions

View File

@ -1,6 +1,5 @@
package dk.camelot64.kickc.model;
import dk.camelot64.kickc.model.iterator.ProgramValue;
import dk.camelot64.kickc.model.operators.Operators;
import dk.camelot64.kickc.model.statements.StatementSource;
import dk.camelot64.kickc.model.symbols.ArraySpec;
@ -21,240 +20,232 @@ public class Initializers {
* @param statementSource The source line
* @return The new statement
*/
public static RValue createZeroValue(SymbolType type, StatementSource statementSource) {
if(type instanceof SymbolTypeIntegerFixed) {
public static RValue createZeroValue(ValueTypeSpec typeSpec, StatementSource statementSource) {
if(typeSpec.getType() instanceof SymbolTypeIntegerFixed) {
// Add an zero value initializer
return new ConstantInteger(0L, type);
} else if(type instanceof SymbolTypePointer) {
// Add an zero value initializer
SymbolTypePointer typePointer = (SymbolTypePointer) type;
return new ConstantPointer(0L, typePointer.getElementType());
} else if(type instanceof SymbolTypeStruct) {
return new ConstantInteger(0L, typeSpec.getType());
} else if(typeSpec.getType() instanceof SymbolTypeStruct) {
// Add an zero-struct initializer
SymbolTypeStruct typeStruct = (SymbolTypeStruct) type;
SymbolTypeStruct typeStruct = (SymbolTypeStruct) typeSpec.getType();
return new StructZero(typeStruct);
} else if(typeSpec.getType() instanceof SymbolTypePointer) {
SymbolTypePointer typePointer = (SymbolTypePointer) typeSpec.getType();
if(typeSpec.getArraySpec() == null) {
// Add an zero value initializer
return new ConstantPointer(0L, typePointer.getElementType());
} else {
// Add an zero-filled array initializer
if(typeSpec.getArraySpec().getArraySize() == null) {
throw new CompileError("Error! Array has no declared size. ", statementSource);
}
return new ConstantArrayFilled(typePointer.getElementType(), typeSpec.getArraySpec().getArraySize());
}
} else {
throw new CompileError("Default initializer not implemented for type " + type.getTypeName(), statementSource);
throw new CompileError("Default initializer not implemented for type " + typeSpec.getType().getTypeName(), statementSource);
}
}
/**
* Get a value for initializing a variable from an expression.
* If possible the value is converted to a ConstantValue.
*
* @param initValue The parsed init expression value (may be null)
* @param type The type of the constant variable (used for creating zero values)
* @param statementSource The statement (used in exceptions.
* @return The constant init-value. Null if the value cannot be turned into a constant init-value.
*/
public static RValue getInitValue(RValue initValue, SymbolType type, ArraySpec arraySpec, Program program, StatementSource statementSource) {
// TODO: Handle struct members
// Create zero-initializers if null
if(initValue == null) {
if(arraySpec!=null) {
// Add an zero-filled array initializer
SymbolTypePointer typePointer = (SymbolTypePointer) type;
if(arraySpec.getArraySize() == null) {
throw new CompileError("Error! Array has no declared size. ", statementSource);
}
initValue = new ConstantArrayFilled(typePointer.getElementType(), arraySpec.getArraySize());
} else {
// Add an zero-value
initValue = createZeroValue(type, statementSource);
}
/** Specifies type properties for a value. Holds normal type and array specification. */
public static class ValueTypeSpec {
SymbolType type;
ArraySpec arraySpec;
public ValueTypeSpec(SymbolType type, ArraySpec arraySpec) {
this.type = type;
this.arraySpec = arraySpec;
}
// Convert initializer value lists to constant if possible
if((initValue instanceof ValueList)) {
ProgramValue programValue = new ProgramValue.GenericValue(initValue);
addValueCasts(type, arraySpec!=null, programValue, program, statementSource);
if(programValue.get() instanceof CastValue) {
CastValue castValue = (CastValue) programValue.get();
if(castValue.getValue() instanceof ValueList) {
// Found value list with cast - look through all elements
ConstantValue constantValue = convertToConstant(castValue.getToType(), (ValueList) castValue.getValue(), program, statementSource);
if(constantValue != null) {
// Converted value list to constant!!
initValue = constantValue;
public SymbolType getType() {
return type;
}
public ArraySpec getArraySpec() {
return arraySpec;
}
}
/**
* Convert as much as possible of the passed value to a constant. Will convert the entire value if possible. If not all sub-values are converted as possible.
*
* @param initValue The value to convert
* @param typeSpec The specified type of the value (including any array properties)
* @param program The program
* @param source The statement source (for error messages)
* @return The constantified value. A {@link ConstantValue} is possible
*/
public static RValue constantify(RValue initValue, ValueTypeSpec typeSpec, Program program, StatementSource source) {
if(initValue == null) {
// Add an zero-value
initValue = createZeroValue(typeSpec, source);
} else if(initValue instanceof ForwardVariableRef) {
// Do not constantify
} else if(initValue instanceof ValueList) {
ValueList initList = (ValueList) initValue;
if(typeSpec.getType() instanceof SymbolTypePointer && typeSpec.getArraySpec() != null) {
// Type is an array
initValue = constantifyArray(initList, (SymbolTypePointer) typeSpec.getType(), typeSpec.getArraySpec(), program, source);
} else if(typeSpec.getType() instanceof SymbolTypeStruct) {
// Type is a struct
initValue = constantifyStruct(initList, (SymbolTypeStruct) typeSpec.getType(), program, source);
} else if(typeSpec.getType().equals(SymbolType.WORD) && initList.getList().size() == 2) {
// Type is an inline word
initValue = constantifyWord(initList, program, source);
} else if(typeSpec.getType().equals(SymbolType.DWORD) && initList.getList().size() == 2) {
// Type is an inline dword
initValue = constantifyDWord(initList, program, source);
} else {
throw new InternalError("Unknown value list type " + typeSpec.getType());
}
} else if(SymbolType.isInteger(typeSpec.getType())) {
if(initValue instanceof ConstantInteger) {
Long integer = ((ConstantInteger) initValue).getInteger();
if(typeSpec.getType() instanceof SymbolTypeIntegerFixed) {
SymbolTypeIntegerFixed typeIntegerFixed = (SymbolTypeIntegerFixed) typeSpec.getType();
if(!typeIntegerFixed.contains(integer)) {
throw new CompileError( "Constant init-value has a non-matching type \n type: " + typeSpec.getType().toString() +"\n value: " + initValue.toString(), source);
}
}
initValue = new ConstantInteger(integer, typeSpec.getType());
} else if(initValue instanceof ConstantValue) {
SymbolType initValueType = ((ConstantValue) initValue).getType(program.getScope());
if(!initValueType.equals(typeSpec.getType()))
initValue = new ConstantCastValue(typeSpec.getType(), (ConstantValue) initValue);
} else {
SymbolType inferredType = SymbolTypeInference.inferType(program.getScope(), initValue);
if(!inferredType.equals(typeSpec.getType()) && !inferredType.equals(SymbolType.VAR)) {
if(SymbolTypeConversion.assignmentTypeMatch(typeSpec.getType(), inferredType))
initValue = new CastValue(typeSpec.getType(), initValue);
else
throw new CompileError("ERROR! Type mismatch (" + typeSpec.getType().getTypeName() + ") cannot be assigned from (" + inferredType.getTypeName() + ").", source);
}
}
}
// Add pointer cast to integers
if(type instanceof SymbolTypePointer && initValue instanceof ConstantValue && SymbolType.isInteger(((ConstantValue) initValue).getType(program.getScope()))) {
initValue = new ConstantCastValue(type, (ConstantValue) initValue);
if(typeSpec.getType() instanceof SymbolTypePointer && initValue instanceof ConstantValue && SymbolType.isInteger(((ConstantValue) initValue).getType(program.getScope()))) {
initValue = new ConstantCastValue(typeSpec.getType(), (ConstantValue) initValue);
}
return initValue;
}
/**
* Add casts to a value based on the declared type of the symbol. Recurses to all sub-values.
*
* @param declaredType The declared type of the value
* @param isArray true if the declared variable is an array
* @param programValue The value wrapped in a program value
* @param source The current statement
* @return true if anything was modified
*/
static boolean addValueCasts(SymbolType declaredType, boolean isArray, ProgramValue programValue, Program program, StatementSource source) {
boolean exprModified = false;
Value value = programValue.get();
if(value instanceof ValueList) {
ValueList valueList = (ValueList) value;
if(declaredType instanceof SymbolTypePointer && isArray) {
SymbolTypePointer declaredArrayType = (SymbolTypePointer) declaredType;
// Recursively cast all sub-elements
SymbolType declaredElmType = declaredArrayType.getElementType();
int size = valueList.getList().size();
// TODO: Check declared array size vs. actual size
for(int i = 0; i < size; i++) {
exprModified |= addValueCasts(declaredElmType, false, new ProgramValue.ProgramValueListElement(valueList, i), program, source);
}
// Add a cast to the value list itself
programValue.set(new CastValue(declaredType, valueList));
} else if(declaredType instanceof SymbolTypeStruct) {
SymbolTypeStruct declaredStructType = (SymbolTypeStruct) declaredType;
// Recursively cast all sub-elements
StructDefinition structDefinition = declaredStructType.getStructDefinition(program.getScope());
Collection<Variable> memberDefinitions = structDefinition.getAllVars(false);
int size = memberDefinitions.size();
if(size != valueList.getList().size()) {
throw new CompileError(
"Struct initializer has wrong size (" + valueList.getList().size() + "), " +
"which does not match the number of members in " + declaredStructType.getTypeName() + " (" + size + " members).\n" +
" Struct initializer: " + valueList.toString(program),
source);
}
Iterator<Variable> memberDefIt = memberDefinitions.iterator();
for(int i = 0; i < size; i++) {
Variable memberDef = memberDefIt.next();
exprModified |= addValueCasts(memberDef.getType(), memberDef.isArray(), new ProgramValue.ProgramValueListElement(valueList, i), program, source);
}
// Add a cast to the value list itself
programValue.set(new CastValue(declaredType, valueList));
} else if(declaredType.equals(SymbolType.WORD) && valueList.getList().size()==2){
// An inline word { byte, byte}
for(int i = 0; i < valueList.getList().size(); i++) {
exprModified |= addValueCasts(SymbolType.BYTE, false, new ProgramValue.ProgramValueListElement(valueList, i), program, source);
}
// Add a cast to the value list itself
programValue.set(new CastValue(declaredType, valueList));
} else if(declaredType.equals(SymbolType.DWORD) && valueList.getList().size()==2){
// An inline dword { byte, byte}
for(int i = 0; i < valueList.getList().size(); i++) {
exprModified |= addValueCasts(SymbolType.WORD, false, new ProgramValue.ProgramValueListElement(valueList, i), program, source);
}
// Add a cast to the value list itself
programValue.set(new CastValue(declaredType, valueList));
} else {
// TODO: Handle word/dword initializers
throw new InternalError("Type not handled! " + declaredType);
}
} else {
SymbolType valueType = SymbolTypeInference.inferType(program.getScope(), (RValue) value);
if(SymbolType.NUMBER.equals(valueType) || SymbolType.VAR.equals(valueType)) {
// Check if the value fits.
if(!SymbolTypeConversion.assignmentTypeMatch(declaredType, valueType)) {
throw new CompileError("Declared type " + declaredType + " does not match element type " + valueType, source);
}
// TODO: Test if the value matches the declared type!
// Add a cast to the value
if(value instanceof ConstantValue) {
programValue.set(new ConstantCastValue(declaredType, (ConstantValue) value));
} else {
programValue.set(new CastValue(declaredType, (RValue) value));
}
exprModified = true;
}
private static RValue constantifyWord(ValueList valueList, Program program, StatementSource source) {
boolean allConst = true;
List<RValue> constantifiedList = new ArrayList<>();
for(RValue elementValue : valueList.getList()) {
RValue constantifiedElement = constantify(elementValue, new ValueTypeSpec(SymbolType.BYTE, null), program, source);
constantifiedList.add(constantifiedElement);
if(!(constantifiedElement instanceof ConstantValue))
allConst = false;
}
if(allConst) {
ConstantValue hiByte = (ConstantValue) constantifiedList.get(0);
ConstantValue loByte = (ConstantValue) constantifiedList.get(1);
return new ConstantBinary(new ConstantBinary(hiByte, Operators.MULTIPLY, new ConstantInteger(0x100L, SymbolType.WORD)), Operators.PLUS, loByte);
} else {
return new CastValue(SymbolType.WORD, new ValueList(constantifiedList));
}
}
private static RValue constantifyDWord(ValueList valueList, Program program, StatementSource source) {
boolean allConst = true;
List<RValue> constantifiedList = new ArrayList<>();
for(RValue elementValue : valueList.getList()) {
RValue constantifiedElement = constantify(elementValue, new ValueTypeSpec(SymbolType.WORD, null), program, source);
constantifiedList.add(constantifiedElement);
if(!(constantifiedElement instanceof ConstantValue))
allConst = false;
}
if(allConst) {
ConstantValue hiWord = (ConstantValue) constantifiedList.get(0);
ConstantValue loWord = (ConstantValue) constantifiedList.get(1);
return new ConstantBinary(new ConstantBinary(hiWord, Operators.MULTIPLY, new ConstantInteger(0x10000L, SymbolType.DWORD)), Operators.PLUS, loWord);
} else {
return new CastValue(SymbolType.DWORD, new ValueList(constantifiedList));
}
return exprModified;
}
/**
* Convert a value list (with casts) to a constant value of the declared type - if all sub-values are constant. Otherwise returns null.
* Convert as much as possible of a struct to constants.
*
* @param declaredType The type of the lvalue
* @param valueList The list of values
* @return The constant value if all list elements are constant. null if elements are not constant
* @param valueList The value list
* @param structType The struct type
* @param program The program
* @param source The source line
* @return The constantified value
*/
static ConstantValue convertToConstant(SymbolType declaredType, ValueList valueList, Program program, StatementSource source) {
// Examine whether all list elements are constant
List<RValue> values = valueList.getList();
List<ConstantValue> constantValues = new ArrayList<>();
for(RValue elmValue : values) {
if(elmValue instanceof ConstantValue) {
ConstantValue constantValue = (ConstantValue) elmValue;
constantValues.add(constantValue);
} else if(elmValue instanceof CastValue) {
// Recursion may be needed
CastValue castValue = (CastValue) elmValue;
if(castValue.getValue() instanceof ValueList) {
ConstantValue constantValue = convertToConstant(castValue.getToType(), (ValueList) castValue.getValue(), program, source);
if(constantValue != null) {
constantValues.add(constantValue);
} else {
// A non-constant was found - exit
return null;
}
} else {
// A non-constant was found - exit
return null;
}
} else {
// A non-constant was found - exit
return null;
}
private static RValue constantifyStruct(ValueList valueList, SymbolTypeStruct structType, Program program, StatementSource source) {
// Recursively cast all sub-elements
StructDefinition structDefinition = structType.getStructDefinition(program.getScope());
Collection<Variable> memberDefinitions = structDefinition.getAllVars(false);
int size = memberDefinitions.size();
if(size != valueList.getList().size()) {
throw new CompileError(
"Struct initializer has wrong size (" + valueList.getList().size() + "), " +
"which does not match the number of members in " + structType.getTypeName() + " (" + size + " members).\n" +
" Struct initializer: " + valueList.toString(program),
source);
}
// All elements are constant - convert to constant of declared type
if(declaredType instanceof SymbolTypePointer) {
// Check that type of constant values match the array element type
SymbolType declaredElementType = ((SymbolTypePointer) declaredType).getElementType();
for(ConstantValue constantValue : constantValues) {
SymbolType elmType = constantValue.getType(program.getScope());
if(!elmType.equals(declaredElementType)) {
throw new CompileError("Initializer element " + constantValue.toString(program) + " does not match array type " + declaredType.getTypeName(), source);
}
}
// Return the constant array
return new ConstantArrayList(constantValues, declaredElementType);
} else if(declaredType instanceof SymbolTypeStruct) {
// Check that type of constant values match the struct member types
SymbolTypeStruct declaredStructType = (SymbolTypeStruct) declaredType;
StructDefinition structDefinition = declaredStructType.getStructDefinition(program.getScope());
Collection<Variable> memberDefs = structDefinition.getAllVars(false);
if(memberDefs.size() != constantValues.size()) {
throw new CompileError(
"Struct initializer has wrong size (" + valueList.getList().size() + "), " +
"which does not match the number of members in " + declaredStructType.getTypeName() + " (\"+size+\" members).\n" +
" Struct initializer: " + valueList.toString(program),
source);
}
Iterator<Variable> memberDefIt = memberDefs.iterator();
LinkedHashMap<SymbolVariableRef, ConstantValue> memberValues = new LinkedHashMap<>();
for(int i = 0; i < constantValues.size(); i++) {
Variable memberDef = memberDefIt.next();
SymbolType declaredElementType = memberDef.getType();
ConstantValue memberValue = constantValues.get(i);
SymbolType elmType = memberValue.getType(program.getScope());
if(!SymbolTypeConversion.assignmentTypeMatch(declaredElementType, elmType)) {
throw new CompileError("Initializer element " + memberValue.toString(program) + " does not match struct member type " + memberDef.toString(program), source);
}
memberValues.put(memberDef.getRef(), memberValue);
}
return new ConstantStructValue(declaredStructType, memberValues);
} else if(declaredType.equals(SymbolType.WORD) && constantValues.size()==2){
// An inline word
for(ConstantValue constantValue : constantValues)
if(!SymbolTypeConversion.assignmentTypeMatch(SymbolType.BYTE, constantValue.getType(program.getScope())))
throw new CompileError("Initializer element " + constantValue.toString(program) + " does not match needed type "+SymbolType.BYTE, source);
return new ConstantBinary(new ConstantBinary(constantValues.get(0), Operators.MULTIPLY, new ConstantInteger(0x100L, SymbolType.WORD)), Operators.PLUS, constantValues.get(1));
} else if(declaredType.equals(SymbolType.DWORD) && constantValues.size()==2){
// An inline dword
for(ConstantValue constantValue : constantValues)
if(!SymbolTypeConversion.assignmentTypeMatch(SymbolType.WORD, constantValue.getType(program.getScope())))
throw new CompileError("Initializer element " + constantValue.toString(program) + " does not match needed type "+SymbolType.WORD, source);
return new ConstantBinary(new ConstantBinary(constantValues.get(0), Operators.MULTIPLY, new ConstantInteger(0x10000L, SymbolType.DWORD)), Operators.PLUS, constantValues.get(1));
boolean allConst = true;
// Constantified values in a list
List<RValue> constantifiedList = new ArrayList<>();
// Map filled if all member values become constant
LinkedHashMap<SymbolVariableRef, ConstantValue> constMemberMap = new LinkedHashMap<>();
Iterator<Variable> memberDefIt = memberDefinitions.iterator();
Iterator<RValue> valueIt = valueList.getList().iterator();
for(int i = 0; i < size; i++) {
Variable memberDef = memberDefIt.next();
RValue memberValue = valueIt.next();
RValue constantifiedMemberValue = constantify(memberValue, new ValueTypeSpec(memberDef.getType(), memberDef.getArraySpec()), program, source);
constantifiedList.add(constantifiedMemberValue);
if(constantifiedMemberValue instanceof ConstantValue)
constMemberMap.put(memberDef.getRef(), (ConstantValue) constantifiedMemberValue);
else
allConst = false;
}
if(allConst) {
// Constant struct
return new ConstantStructValue(structType, constMemberMap);
} else {
throw new InternalError("Not supported " + declaredType);
// Constantified list with a cast
return new CastValue(structType, new ValueList(constantifiedList));
}
}
/**
* Convert as much of an array to constant as possible. Also zero-pads the value-list to the declared array length (if possible).
*
* @param valueList The list of values
* @param arrayType The pointer type of the array
* @param arraySpec The array spec holding the array size.
* @param program The program
* @param source The source line
* @return The constantified value
*/
private static RValue constantifyArray(ValueList valueList, SymbolTypePointer arrayType, ArraySpec arraySpec, Program program, StatementSource source) {
SymbolType elementType = arrayType.getElementType();
// TODO: Handle array of array
ValueTypeSpec elementTypeSpec = new ValueTypeSpec(elementType, null);
boolean allConst = true;
List<RValue> constantifiedList = new ArrayList<>();
for(RValue elementValue : valueList.getList()) {
RValue constantifiedElement = constantify(elementValue, elementTypeSpec, program, source);
constantifiedList.add(constantifiedElement);
if(!(constantifiedElement instanceof ConstantValue))
allConst = false;
}
if(allConst) {
// Convert to ConstantArrayList (throwing away the array size)
ArrayList<ConstantValue> constElementList = new ArrayList<>();
for(RValue rValue : constantifiedList) {
constElementList.add((ConstantValue) rValue);
}
return new ConstantArrayList(constElementList, elementType, arraySpec.getArraySize());
} else {
// Convert to a ValueList with a cast to the pointer-type (throwing away the array size)
return new CastValue(arrayType, new ValueList(constantifiedList));
}
}

View File

@ -17,6 +17,8 @@ public class SymbolTypeInference {
SymbolType type = null;
if(rValue instanceof SymbolVariableRef) {
Variable variable = symbols.getVar((SymbolVariableRef) rValue);
if(variable==null)
throw new CompileError("Unknown variable "+rValue.toString());
type = variable.getType();
} else if(rValue instanceof Symbol) {
Symbol rSymbol = (Symbol) rValue;
@ -47,7 +49,7 @@ public class SymbolTypeInference {
} else if(pointerType.equals(SymbolType.STRING)) {
return SymbolType.BYTE;
} else {
throw new CompileError("Cannot infer pointer element type from type: " + pointerType);
return SymbolType.VAR;
}
} else if(rValue instanceof ConstantArrayList) {
return new SymbolTypePointer(((ConstantArrayList) rValue).getElementType());

View File

@ -9,4 +9,6 @@ public interface ConstantArray extends ConstantValue {
SymbolType getElementType();
ConstantValue getSize();
}

View File

@ -22,10 +22,19 @@ public class ConstantArrayKickAsm implements ConstantArray {
/** Variables/constants used by the kickasm code. */
private List<SymbolRef> uses;
public ConstantArrayKickAsm(SymbolType elementType, String kickAsmCode, List<SymbolRef> uses) {
/** Array size (from declaration) */
private ConstantValue size;
public ConstantArrayKickAsm(SymbolType elementType, String kickAsmCode, List<SymbolRef> uses, ConstantValue size) {
this.elementType = elementType;
this.kickAsmCode = kickAsmCode;
this.uses = uses;
this.size = size;
}
@Override
public ConstantValue getSize() {
return size;
}
public List<SymbolRef> getUses() {

View File

@ -13,13 +13,19 @@ import java.util.List;
*/
public class ConstantArrayList implements ConstantArray {
/** The element list. */
private List<ConstantValue> list;
/** Type of the elements. */
private SymbolType elementType;
public ConstantArrayList(List<ConstantValue> list, SymbolType elementType) {
/** Array size (from declaration) */
private ConstantValue size;
public ConstantArrayList(List<ConstantValue> list, SymbolType elementType, ConstantValue size) {
this.list = list;
this.elementType = elementType;
this.size = size;
}
@Override
@ -35,6 +41,15 @@ public class ConstantArrayList implements ConstantArray {
return list;
}
@Override
public ConstantValue getSize() {
return size;
}
public void setSize(ConstantValue size) {
this.size = size;
}
@Override
public ConstantLiteral calculateLiteral(ProgramScope scope) {
throw new ConstantNotLiteral("Cannot calculate literal array");

View File

@ -566,7 +566,7 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
if(initializer != null)
PrePostModifierHandler.addPreModifiers(this, initializer, statementSource);
RValue initValue = (initializer == null) ? null : (RValue) visit(initializer);
initValue = Initializers.getInitValue(initValue, declVarType, declArraySpec, program, statementSource);
initValue = Initializers.constantify(initValue, new Initializers.ValueTypeSpec(declVarType, declArraySpec), program, statementSource);
VariableBuilder varBuilder = new VariableBuilder(varName, getCurrentScope(), false, declVarType, declArraySpec, declVarDirectives, currentDataSegment);
Variable variable = varBuilder.build();
if(variable.isKindConstant()) {
@ -591,7 +591,7 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
/**
* Ensure that tha initializer value is a constant. Fail if it is not
*
* @param initValue The initializer value (result from {@link Initializers#getInitValue(RValue, SymbolType, ArraySpec, Program, StatementSource)})
* @param initValue The initializer value (result from {@link Initializers#constantify(RValue, Initializers.ValueTypeSpec, Program, StatementSource)}
* @param initializer The initializer
* @param statementSource The source line
* @return The constant initializer value
@ -629,7 +629,7 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
if(kasm.getDeclaredClobber() != null) {
throw new CompileError("KickAsm initializers does not support 'clobbers' directive.", statementSource);
}
ConstantArrayKickAsm constantArrayKickAsm = new ConstantArrayKickAsm(((SymbolTypePointer) this.declVarType).getElementType(), kasm.getKickAsmCode(), kasm.getUses());
ConstantArrayKickAsm constantArrayKickAsm = new ConstantArrayKickAsm(((SymbolTypePointer) this.declVarType).getElementType(), kasm.getKickAsmCode(), kasm.getUses(), declArraySpec.getArraySize());
// Remove the KickAsm statement
sequence.getStatements().remove(sequence.getStatements().size() - 1);
// Add a constant variable

View File

@ -85,14 +85,13 @@ public class Pass1EarlyConstantIdentification extends Pass1Base {
SymbolType variableType = variable.getType();
if(!SymbolTypeConversion.assignmentTypeMatch(variableType, valueType) || SymbolType.NUMBER.equals(valueType)) {
boolean typeOk = false;
ConstantLiteral constantLiteral = null;
try {
constantLiteral = constantValue.calculateLiteral(getScope());
} catch(ConstantNotLiteral e) {
// ignore
}
String literalStr = (constantLiteral == null) ? "null" : constantLiteral.toString(getProgram());
boolean typeOk = false;
if(SymbolType.NUMBER.equals(valueType)) {
if(variableType instanceof SymbolTypeIntegerFixed && constantLiteral instanceof ConstantInteger) {
SymbolTypeIntegerFixed variableTypeInt = (SymbolTypeIntegerFixed) variableType;
@ -108,6 +107,7 @@ public class Pass1EarlyConstantIdentification extends Pass1Base {
}
}
if(!typeOk) {
String literalStr = (constantLiteral == null) ? "null" : constantLiteral.toString(getProgram());
throw new CompileError(
"Constant variable has a non-matching type \n variable: " + variable.toString(getProgram()) +
"\n value: (" + valueType.toString() + ") " + literalStr +

View File

@ -202,7 +202,11 @@ public class Pass1UnwindStructValues extends Pass1Base {
}
if(assignment.getOperator() == null) {
if(assignment.getrValue2() instanceof StructZero && assignment.getlValue() instanceof VariableRef) {
RValue rValue = assignment.getrValue2();
if(rValue instanceof CastValue) {
rValue = ((CastValue) rValue).getValue();
}
if(rValue instanceof StructZero && assignment.getlValue() instanceof VariableRef) {
// Zero-initializing a struct - unwind to assigning zero to each member!
List<RValue> membersUnwound = new ArrayList<>();
stmtIt.previous();
@ -223,7 +227,8 @@ public class Pass1UnwindStructValues extends Pass1Base {
membersUnwound.add(memberVarRef);
StatementSource statementSource = assignment.getSource();
SymbolType memberType = memberUnwinding.getMemberType(memberName);
RValue initValue = Initializers.createZeroValue(memberType, statementSource);
ArraySpec memberArraySpec = memberUnwinding.getArraySpec(memberName);
RValue initValue = Initializers.createZeroValue(new Initializers.ValueTypeSpec(memberType, memberArraySpec), statementSource);
Statement initStmt = new StatementAssignment(memberVarRef, initValue, assignment.isInitialAssignment(), statementSource, Comment.NO_COMMENTS);
stmtIt.add(initStmt);
getLog().append("Adding struct value member variable default initializer " + initStmt.toString(getProgram(), false));
@ -237,9 +242,9 @@ public class Pass1UnwindStructValues extends Pass1Base {
stmtIt.remove();
}
return true;
} else if(assignment.getrValue2() instanceof ValueList) {
} else if(rValue instanceof ValueList) {
// Initializing struct with a value list - unwind to assigning each member with a value from the list
ValueList valueList = (ValueList) assignment.getrValue2();
ValueList valueList = (ValueList) rValue;
if(memberUnwinding.getMemberNames().size() != valueList.getList().size()) {
throw new CompileError("Struct initialization list has wrong size. Need " + memberUnwinding.getMemberNames().size() + " got " + valueList.getList().size(), assignment);
}
@ -262,13 +267,13 @@ public class Pass1UnwindStructValues extends Pass1Base {
}
return true;
} else {
if(assignment.getrValue2() instanceof StructUnwoundPlaceholder)
if(rValue instanceof StructUnwoundPlaceholder)
return false;
SymbolTypeStruct structType = (SymbolTypeStruct) SymbolTypeInference.inferType(getScope(), assignment.getlValue());
SymbolType sourceType = SymbolTypeInference.inferType(getScope(), assignment.getrValue2());
SymbolType sourceType = SymbolTypeInference.inferType(getScope(), rValue);
if(sourceType.equals(structType)) {
// Copying a struct - unwind to assigning each member!
StructUnwinding.StructMemberUnwinding sourceMemberUnwinding = getStructMemberUnwinding(assignment.getrValue2(), assignment, stmtIt, currentBlock);
StructUnwinding.StructMemberUnwinding sourceMemberUnwinding = getStructMemberUnwinding(rValue, assignment, stmtIt, currentBlock);
if(sourceMemberUnwinding == null) {
throw new CompileError("Incompatible struct assignment " + assignment.toString(getProgram(), false), assignment);
} else if(sourceMemberUnwinding == POSTPONE_UNWINDING) {

View File

@ -432,6 +432,7 @@ public class TestPrograms {
@Test
public void testFunctionAsArray() throws IOException, URISyntaxException {
compileAndCompare("function-as-array", log().verboseParse().verboseCreateSsa());
assertError("function-as-array", "Cannot infer pointer element type from type: void()");
}
@ -502,7 +503,7 @@ public class TestPrograms {
@Test
public void testCastError() throws IOException, URISyntaxException {
assertError("cast-error", "Cannot infer pointer element type from type");
assertError("cast-error", "cannot be assigned from");
}
@Test
@ -3422,7 +3423,7 @@ public class TestPrograms {
@Test
public void testInvalidConstType() throws IOException, URISyntaxException {
assertError("invalid-consttype", "Constant variable has a non-matching type", false);
assertError("invalid-consttype", "Constant init-value has a non-matching type", false);
}
@Test

View File

@ -2,7 +2,7 @@
// The tetris pieces
// The T-piece
align(0x40) char[4*4*4] PIECE_T = {
align(0x40) char[64] PIECE_T = {
0, 0, 0, 0,
1, 1, 1, 0,
0, 1, 0, 0,
@ -25,7 +25,7 @@ align(0x40) char[4*4*4] PIECE_T = {
};
// The S-piece
align(0x40) char[4*4*4] PIECE_S = {
align(0x40) char[64] PIECE_S = {
0, 0, 0, 0,
0, 1, 1, 0,
1, 1, 0, 0,
@ -49,7 +49,7 @@ align(0x40) char[4*4*4] PIECE_S = {
};
// The Z-piece
align(0x40) char[4*4*4] PIECE_Z = {
align(0x40) char[64] PIECE_Z = {
0, 0, 0, 0,
1, 1, 0, 0,
0, 1, 1, 0,
@ -73,7 +73,7 @@ align(0x40) char[4*4*4] PIECE_Z = {
};
// The L-piece
align(0x40) char[4*4*4] PIECE_L = {
align(0x40) char[64] PIECE_L = {
0, 0, 0, 0,
1, 1, 1, 0,
1, 0, 0, 0,
@ -97,7 +97,7 @@ align(0x40) char[4*4*4] PIECE_L = {
};
// The J-piece
align(0x40) char[4*4*4] PIECE_J = {
align(0x40) char[64] PIECE_J = {
0, 0, 0, 0,
1, 1, 1, 0,
0, 0, 1, 0,
@ -121,7 +121,7 @@ align(0x40) char[4*4*4] PIECE_J = {
};
// The O-piece
align(0x40) char[4*4*4] PIECE_O = {
align(0x40) char[64] PIECE_O = {
0, 0, 0, 0,
0, 1, 1, 0,
0, 1, 1, 0,
@ -145,7 +145,7 @@ align(0x40) char[4*4*4] PIECE_O = {
};
// The I-piece
align(0x40) char[4*4*4] PIECE_I = {
align(0x40) char[64] PIECE_I = {
0, 0, 0, 0,
0, 0, 0, 0,
1, 1, 1, 1,

View File

@ -3,6 +3,7 @@
// Also handles double buffering
import "tetris-data"
import "tetris-pieces"
kickasm(pc PLAYFIELD_CHARSET, resource "playfield-screen.imap") {{
.fill 8,$00 // Place a filled char at the start of the charset

View File

@ -1,5 +1,5 @@
// Tests treating a function like an array
// Should produce an
// Should produce an error
// https://gitlab.com/camelot/kickc/issues/276
void main() {

View File

@ -1,7 +1,7 @@
// Test a bit of array code from the NES forum
// https://forums.nesdev.com/viewtopic.php?f=2&t=18735
int[4] wow = { 0xCAFE, 0xBABE, 0x1234, 0x5678};
int[4] wow = { (int)0xCAFE, (int)0xBABE, 0x1234, 0x5678};
int foo(unsigned char x, int *y) {
return wow[x] + *y;

View File

@ -16,6 +16,22 @@ const byte* SCREEN_FILL = 0x0400;
// Char to fill with
const byte FILL_CHAR = '*';
// The number of buckets in our bucket sort
const byte NUM_BUCKETS = 0x30;
// Array containing the bucket size for each of the distance buckets
byte* BUCKET_SIZES = malloc(NUM_BUCKETS*sizeof(byte));
// Buckets containing screen indices for each distance from the center.
// BUCKETS[dist] is an array of words containing screen indices.
// The size of the array BUCKETS[dist] is BUCKET_SIZES[dist]
word** BUCKETS = malloc(NUM_BUCKETS*sizeof(word*));
// Current index into each bucket. Used while populating the buckets. (After population the end the values will be equal to the bucket sizes)
byte* BUCKET_IDX = malloc(NUM_BUCKETS*sizeof(byte));
void main() {
asm { sei }
init_dist_screen(SCREEN_DIST);
@ -66,20 +82,6 @@ void main() {
(*(COLS+999))++;
}
// The number of buckets in our bucket sort
const byte NUM_BUCKETS = 0x30;
// Array containing the bucket size for each of the distance buckets
byte* BUCKET_SIZES = malloc(NUM_BUCKETS*sizeof(byte));
// Buckets containing screen indices for each distance from the center.
// BUCKETS[dist] is an array of words containing screen indices.
// The size of the array BUCKETS[dist] is BUCKET_SIZES[dist]
word** BUCKETS = malloc(NUM_BUCKETS*sizeof(word*));
// Current index into each bucket. Used while populating the buckets. (After population the end the values will be equal to the bucket sizes)
byte* BUCKET_IDX = malloc(NUM_BUCKETS*sizeof(byte));
// Initialize buckets containing indices of chars on the screen with specific distances to the center.
void init_buckets(byte* screen) {
// Init bucket sizes to 0

View File

@ -20,7 +20,7 @@ void textbox(byte x1, byte y1, byte x2, byte y2, byte* text) {
draw_window(x1, y1, x2, y2);
byte y = y1+1;
byte x = x1+1;
word z = y*40;
word z = (word)y*40;
byte i = 0;
if (x == x2 || y == y2) {
// no room to draw text, simply return

View File

@ -5,7 +5,7 @@ Culled Empty Block (label) main::@6
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte) i ← (number) 3
(byte) i ← (byte) 3
to:@1
(void()) main()
@ -42,16 +42,11 @@ SYMBOL TABLE SSA
(label) main::@2
(label) main::@return
Adding number conversion cast (unumber) 3 in (byte) i ← (number) 3
Adding number conversion cast (unumber) 7 in (bool~) main::$0 ← (byte) i < (number) 7
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) i ← (unumber)(number) 3
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 7
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simple Condition (bool~) main::$0 [2] if((byte) i<(byte) 7) goto main::@2

View File

@ -9,7 +9,7 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from @1
(byte) main::i ← (number) 3
(byte) main::i ← (byte) 3
to:main::@1
main::@1: scope:[main] from main main::@2
(bool~) main::$0 ← (byte) main::i < (number) 7
@ -42,16 +42,11 @@ SYMBOL TABLE SSA
(label) main::@return
(byte) main::i loadstore !zp[-1]:2
Adding number conversion cast (unumber) 3 in (byte) main::i ← (number) 3
Adding number conversion cast (unumber) 7 in (bool~) main::$0 ← (byte) main::i < (number) 7
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::i ← (unumber)(number) 3
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 7
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simple Condition (bool~) main::$0 [2] if((byte) main::i<(byte) 7) goto main::@2

View File

@ -5,7 +5,7 @@ Culled Empty Block (label) main::@6
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte) i ← (number) 3
(byte) i ← (byte) 3
to:@1
(void()) main()
@ -42,16 +42,11 @@ SYMBOL TABLE SSA
(label) main::@2
(label) main::@return
Adding number conversion cast (unumber) 3 in (byte) i ← (number) 3
Adding number conversion cast (unumber) 7 in (bool~) main::$0 ← (byte) i < (number) 7
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) i ← (unumber)(number) 3
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 7
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simple Condition (bool~) main::$0 [2] if((byte) i<(byte) 7) goto main::@2

View File

@ -9,7 +9,7 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from @1
(byte) main::i ← (number) 3
(byte) main::i ← (byte) 3
to:main::@1
main::@1: scope:[main] from main main::@2
(bool~) main::$0 ← (byte) main::i < (number) 7
@ -42,16 +42,11 @@ SYMBOL TABLE SSA
(label) main::@return
(byte) main::i loadstore !mem[-1]:8192
Adding number conversion cast (unumber) 3 in (byte) main::i ← (number) 3
Adding number conversion cast (unumber) 7 in (bool~) main::$0 ← (byte) main::i < (number) 7
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::i ← (unumber)(number) 3
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 7
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simple Condition (bool~) main::$0 [2] if((byte) main::i<(byte) 7) goto main::@2

View File

@ -12,7 +12,7 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from @1
(byte) main::i ← (number) 0
(byte) main::i ← (byte) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(bool~) main::$0 ← (byte) main::i < (number) 8
@ -50,19 +50,14 @@ SYMBOL TABLE SSA
(label) main::@1
(label) main::@2
(label) main::@return
(const word) main::ch = (number) $102
(const word) main::ch = (word) $102
(byte) main::i loadstore !zp[-1]:2
Adding number conversion cast (unumber) 0 in (byte) main::i ← (number) 0
Adding number conversion cast (unumber) 8 in (bool~) main::$0 ← (byte) main::i < (number) 8
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::i ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (word*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simple Condition (bool~) main::$0 [2] if((byte) main::i<(byte) 8) goto main::@2
@ -332,7 +327,7 @@ FINAL SYMBOL TABLE
(label) main::@1
(label) main::@2
(label) main::@return
(const word) main::ch = (number) $102
(const word) main::ch = (word) $102
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 19.75
zp[1]:2 [ main::i ]

View File

@ -8,7 +8,7 @@
(label) main::@1
(label) main::@2
(label) main::@return
(const word) main::ch = (number) $102
(const word) main::ch = (word) $102
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 19.75
zp[1]:2 [ main::i ]

View File

@ -10,9 +10,9 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from @2
(byte) main::b1#0 ← (number) 0
(byte) main::b2#0 ← (number) 0
(byte) main::b3#0 ← (number) 0
(byte) main::b1#0 ← (byte) 0
(byte) main::b2#0 ← (byte) 0
(byte) main::b3#0 ← (byte) 0
(byte*) setByte::ptr#0 ← &(byte) main::b1#0
(byte) setByte::b#0 ← (byte) 'c'
call setByte
@ -100,29 +100,16 @@ SYMBOL TABLE SSA
(byte*) setByte::ptr#2
(byte*) setByte::ptr#3
Adding number conversion cast (unumber) 0 in (byte) main::b1#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) main::b2#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) main::b3#0 ← (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← (byte) main::b1#1
Adding number conversion cast (unumber) 1 in *((const byte*) main::SCREEN + (number) 1) ← (byte) main::b2#2
Adding number conversion cast (unumber) 2 in *((const byte*) main::SCREEN + (number) 2) ← (byte) main::b3#2
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::b1#0 ← (unumber)(number) 0
Inlining cast (byte) main::b2#0 ← (unumber)(number) 0
Inlining cast (byte) main::b3#0 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Successful SSA optimization PassNFinalizeNumberTypeConversions

View File

@ -5,13 +5,13 @@ Culled Empty Block (label) @2
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte) val#0 ← (number) 0
(byte) val#0 ← (byte) 0
to:@3
(void()) main()
main: scope:[main] from @3
(byte) val#8 ← phi( @3/(byte) val#14 )
(byte) main::idx#0 ← (number) 0
(byte) main::idx#0 ← (byte) 0
*((const byte*) main::SCREEN1 + (byte) main::idx#0) ← (byte) val#8
*((const byte*) main::SCREEN2 + (byte) main::idx#0) ← (byte) '.'
(byte) main::idx#1 ← ++ (byte) main::idx#0
@ -137,16 +137,12 @@ SYMBOL TABLE SSA
(byte) val#9
Adding number conversion cast (unumber) $28 in
Adding number conversion cast (unumber) 0 in (byte) val#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte) val#1 ← (number) 1
Adding number conversion cast (unumber) 2 in (byte) val#2 ← (number) 2
Adding number conversion cast (unumber) 3 in *((const byte*) main::ptr) ← (number) 3
Adding number conversion cast (unumber) 4 in (byte) setv::v#0 ← (number) 4
Adding number conversion cast (unumber) 5 in (byte) setp::v#0 ← (number) 5
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) val#0 ← (unumber)(number) 0
Inlining cast (byte) main::idx#0 ← (unumber)(number) 0
Inlining cast (byte) val#1 ← (unumber)(number) 1
Inlining cast (byte) val#2 ← (unumber)(number) 2
Inlining cast *((const byte*) main::ptr) ← (unumber)(number) 3
@ -155,8 +151,6 @@ Inlining cast (byte) setp::v#0 ← (unumber)(number) 5
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 3
@ -164,8 +158,6 @@ Simplifying constant integer cast 4
Simplifying constant integer cast 5
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 3

View File

@ -46,7 +46,7 @@ main::@return: scope:[main] from main::@5
return
to:@return
@1: scope:[] from @begin
(byte) idx#4 ← (number) 0
(byte) idx#4 ← (byte) 0
to:@2
(void()) print((signed word*) print::p)
@ -80,7 +80,7 @@ SYMBOL TABLE SSA
(label) @end
(const signed word*) SCREEN = (signed word*)(number) $400
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const signed word*) VALS[] = { (signed word)(number) 1, (signed word)(number) 2, (signed word)(number) 3, (signed word)(number) 4 }
(const signed word*) VALS[] = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 }
(byte) idx
(byte) idx#0
(byte) idx#1
@ -125,21 +125,12 @@ SYMBOL TABLE SSA
Adding number conversion cast (unumber) 1*SIZEOF_SIGNED_WORD in (signed word*) print::p#1 ← (const signed word*) VALS+(number) 1*(const byte) SIZEOF_SIGNED_WORD
Adding number conversion cast (unumber) 1 in (signed word*) print::p#1 ← (const signed word*) VALS+(unumber)(number) 1*(const byte) SIZEOF_SIGNED_WORD
Adding number conversion cast (unumber) 0 in (byte) idx#4 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) idx#4 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast 4
Simplifying constant pointer cast (signed word*) 1024
Simplifying constant integer cast (unumber)(number) 1*(const byte) SIZEOF_SIGNED_WORD
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte) idx#0 = (byte) idx#8
Alias (byte) idx#1 = (byte) idx#9

View File

@ -31,7 +31,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
(const byte) SZ = (number) $f
(const byte) SZ = (byte) $f
(const byte*) items[(const byte) SZ] = { fill( SZ, 0) }
(void()) main()
(bool~) main::$0
@ -275,7 +275,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte) SZ = (number) $f
(const byte) SZ = (byte) $f
(const byte*) items[(const byte) SZ] = { fill( SZ, 0) }
(void()) main()
(label) main::@1

View File

@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
(const byte) SZ = (number) $f
(const byte) SZ = (byte) $f
(const byte*) items[(const byte) SZ] = { fill( SZ, 0) }
(void()) main()
(label) main::@1

View File

@ -48,9 +48,9 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
(const byte) ITEM_COUNT = (number) 3
(const byte) ITEM_SIZE = (number) 5
(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
(const byte) ITEM_COUNT = (byte) 3
(const byte) ITEM_SIZE = (byte) 5
(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(void()) main()
(number~) main::$0
(number~) main::$1
@ -83,21 +83,6 @@ Adding number conversion cast (unumber) main::$1 in (number~) main::$1 ← (unum
Adding number conversion cast (unumber) 1 in (byte) main::sub#1 ← (byte) main::sub#2 + rangenext(0,ITEM_SIZE-1)
Adding number conversion cast (unumber) 1 in (byte) main::item#1 ← (byte) main::item#3 + rangenext(0,ITEM_COUNT-1)
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $10
Simplifying constant integer cast 1
Simplifying constant integer cast 1
@ -509,8 +494,8 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte) ITEM_COUNT = (number) 3
(const byte) ITEM_SIZE = (number) 5
(const byte) ITEM_COUNT = (byte) 3
(const byte) ITEM_SIZE = (byte) 5
(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(void()) main()
(byte~) main::$0 reg byte a 202.0

View File

@ -1,8 +1,8 @@
(label) @1
(label) @begin
(label) @end
(const byte) ITEM_COUNT = (number) 3
(const byte) ITEM_SIZE = (number) 5
(const byte) ITEM_COUNT = (byte) 3
(const byte) ITEM_SIZE = (byte) 5
(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(void()) main()
(byte~) main::$0 reg byte a 202.0

View File

@ -14,7 +14,7 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from @1
(byte) main::i#0 ← (number) 0
(byte) main::i#0 ← (byte) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
@ -27,7 +27,7 @@ main::@2: scope:[main] from main::@1
(byte) main::i#1 ← ++ (byte) main::i#3
to:main::@1
main::@3: scope:[main] from main::@1
(byte) main::i1#0 ← (number) 0
(byte) main::i1#0 ← (byte) 0
to:main::@7
main::@7: scope:[main] from main::@3 main::@8
(byte) main::i1#2 ← phi( main::@3/(byte) main::i1#0 main::@8/(byte) main::i1#1 )
@ -77,26 +77,17 @@ SYMBOL TABLE SSA
(const byte*) msg1[(number) $10] = (string) "camelot"
(const byte*) msg2[(number) $10] = { (byte) 'c', (byte) 'm', (byte) 'l' }
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) main::$0 ← (number) 0 != *((const byte*) msg1 + (byte) main::i#2)
Adding number conversion cast (unumber) 0 in (byte) main::i1#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) main::$1 ← (number) 0 != *((const byte*) msg2 + (byte) main::i1#2)
Adding number conversion cast (unumber) $28 in *((const byte*) SCREEN+(number) $28 + (byte) main::i1#3) ← *((const byte*) msg2 + (byte) main::i1#3)
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::i#0 ← (unumber)(number) 0
Inlining cast (byte) main::i1#0 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $28
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte) main::i#2 = (byte) main::i#3

View File

@ -15,8 +15,8 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from @2
(byte*) screen2#2 ← phi( @2/(byte*) screen2#13 )
(byte) main::i#0 ← (number) 0
(byte) main::a#0 ← (number) 3
(byte) main::i#0 ← (byte) 0
(byte) main::a#0 ← (byte) 3
(byte) test::i#0 ← (byte) main::i#0
(byte) test::a#0 ← (byte) main::a#0
call test
@ -226,7 +226,7 @@ SYMBOL TABLE SSA
(byte) main::i#7
(byte) main::i#8
(byte) main::i#9
(const byte*) ref[] = { (byte)(number) 3, (byte)(number) 4, (byte)(number) 3, (byte)(number) $12, (byte)(number) 9, (byte)(number) 1, (byte)(number) 4, (byte)(number) 2, (byte)(number) 4, (byte)(number) 5, (byte)(number) 1, (byte)(number) 0 }
(const byte*) ref[] = { (byte) 3, (byte) 4, (byte) 3, (byte) $12, (byte) 9, (byte) 1, (byte) 4, (byte) 2, (byte) 4, (byte) 5, (byte) 1, (byte) 0 }
(const byte*) screen1 = (byte*)(number) $400
(byte*) screen2
(byte*) screen2#0
@ -278,8 +278,6 @@ SYMBOL TABLE SSA
(byte) test::i#9
Adding number conversion cast (unumber) $28 in (byte*~) $0 ← (const byte*) screen1 + (number) $28
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
Adding number conversion cast (unumber) 3 in (byte) main::a#0 ← (number) 3
Adding number conversion cast (unumber) 1 in (byte) main::a#1 ← (byte) main::a#11 + (number) 1
Adding number conversion cast (unumber) 1 in (byte) main::a#2 ← (byte) main::a#12 - (number) 1
Adding number conversion cast (unumber) 6 in (byte) main::a#3 ← (byte) main::a#13 * (number) 6
@ -291,26 +289,9 @@ Adding number conversion cast (unumber) 6 in (byte) main::a#8 ← (byte) main::a
Adding number conversion cast (unumber) 1 in (byte) main::a#9 ← (byte) main::a#19 | (number) 1
Adding number conversion cast (unumber) 1 in (byte) main::a#10 ← (byte) main::a#20 & (number) 1
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::i#0 ← (unumber)(number) 0
Inlining cast (byte) main::a#0 ← (unumber)(number) 3
Successful SSA optimization Pass2InlineCast
Simplifying constant integer cast 3
Simplifying constant integer cast 4
Simplifying constant integer cast 3
Simplifying constant integer cast $12
Simplifying constant integer cast 9
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast 5
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 55296
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast 3
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 6
@ -323,8 +304,6 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 6

View File

@ -23,7 +23,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*)(number) $d021
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(void()) main()
(label) main::@return
@ -176,7 +176,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(void()) main()
(label) main::@return

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(void()) main()
(label) main::@return

View File

@ -23,7 +23,7 @@ main::@5: scope:[main] from main::@4
[10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400
to:main::@1
main::@1: scope:[main] from main::@5 main::@6
[11] (signed word) main::i#2 ← phi( main::@5/(signed byte) 1 main::@6/(signed word) main::i#1 )
[11] (signed word) main::i#2 ← phi( main::@5/(signed word) 1 main::@6/(signed word) main::i#1 )
[12] if((signed word) main::i#2<(signed word) $b4) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@1 main::@3
@ -45,7 +45,7 @@ circle: scope:[circle] from main::@2
circle::@1: scope:[circle] from circle circle::@13
[19] (signed word) circle::p#3 ← phi( circle/(signed word) circle::p#0 circle::@13/(signed word) circle::p#10 )
[19] (signed word) circle::y#13 ← phi( circle/(signed word) circle::r#0 circle::@13/(signed word) circle::y#10 )
[19] (signed word) circle::x1#10 ← phi( circle/(signed byte) 0 circle::@13/(signed word) circle::x1#1 )
[19] (signed word) circle::x1#10 ← phi( circle/(signed word) 0 circle::@13/(signed word) circle::x1#1 )
[20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2
to:circle::@return
circle::@return: scope:[circle] from circle::@1

View File

@ -45,7 +45,7 @@ main::@10: scope:[main] from main::@9
*((const byte*) BORDERCOL) ← (const byte) BLUE
*((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
*((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(number) $3fff/(number) $40|(word)(const byte*) BITMAP&(number) $3fff/(number) $400
(signed word) main::i#0 ← (number) 1
(signed word) main::i#0 ← (signed word) 1
to:main::@1
main::@1: scope:[main] from main::@10 main::@11
(signed word) main::i#2 ← phi( main::@10/(signed word) main::i#0 main::@11/(signed word) main::i#1 )
@ -79,7 +79,7 @@ circle: scope:[circle] from main::@2
(signed word~) circle::$0 ← (signed word) circle::r#1 << (number) 1
(number~) circle::$1 ← (number) 3 - (signed word~) circle::$0
(signed word) circle::p#0 ← (number~) circle::$1
(signed word) circle::x1#0 ← (number) 0
(signed word) circle::x1#0 ← (signed word) 0
to:circle::@1
circle::@1: scope:[circle] from circle circle::@18
(signed word) circle::yc#12 ← phi( circle/(signed word) circle::yc#13 circle::@18/(signed word) circle::yc#14 )
@ -305,15 +305,15 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*)(number) $2000
(const byte) BLUE = (number) 6
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) D011 = (byte*)(number) $d011
(const byte*) SCREEN = (byte*)(number) $400
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
(const byte*) bitmask[] = { (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 }
(const byte) VIC_RSEL = (byte) 8
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0
(number~) circle::$1
@ -539,7 +539,6 @@ Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *((const b
Adding number conversion cast (unumber) 3 in *((const byte*) D011) ← ((unumber)) (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) $3fff in *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(number) $3fff/(number) $40|(word)(const byte*) BITMAP&(number) $3fff/(number) $400
Adding number conversion cast (unumber) $3fff in *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const byte*) BITMAP&(number) $3fff/(number) $400
Adding number conversion cast (snumber) 1 in (signed word) main::i#0 ← (number) 1
Adding number conversion cast (snumber) $b4 in (bool~) main::$2 ← (signed word) main::i#2 < (number) $b4
Adding number conversion cast (snumber) $a0 in (signed word) circle::xc#0 ← (number) $a0
Adding number conversion cast (snumber) $64 in (signed word) circle::yc#0 ← (number) $64
@ -547,7 +546,6 @@ Adding number conversion cast (snumber) 5 in (signed word) main::i#1 ← (signed
Adding number conversion cast (snumber) 1 in (signed word~) circle::$0 ← (signed word) circle::r#1 << (number) 1
Adding number conversion cast (snumber) 3 in (number~) circle::$1 ← (number) 3 - (signed word~) circle::$0
Adding number conversion cast (snumber) circle::$1 in (number~) circle::$1 ← (snumber)(number) 3 - (signed word~) circle::$0
Adding number conversion cast (snumber) 0 in (signed word) circle::x1#0 ← (number) 0
Adding number conversion cast (snumber) 0 in (bool~) circle::$3 ← (signed word) circle::p#3 < (number) 0
Adding number conversion cast (snumber) 2 in (signed word~) circle::$9 ← (signed word) circle::x1#3 << (number) 2
Adding number conversion cast (snumber) 6 in (number~) circle::$11 ← (signed word~) circle::$10 + (number) 6
@ -579,24 +577,14 @@ Inlining cast (byte) fill::val#0 ← (unumber)(number) 0
Inlining cast (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19
Inlining cast (byte) fill::val#1 ← (unumber)(number) $16
Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast (signed word) main::i#0 ← (snumber)(number) 1
Inlining cast (signed word) circle::xc#0 ← (snumber)(number) $a0
Inlining cast (signed word) circle::yc#0 ← (snumber)(number) $64
Inlining cast (signed word) circle::x1#0 ← (snumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53280
Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast $80
Simplifying constant integer cast $40
Simplifying constant integer cast $20
Simplifying constant integer cast $10
Simplifying constant integer cast 8
Simplifying constant integer cast 4
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $16
Simplifying constant integer cast (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
@ -605,7 +593,6 @@ Simplifying constant integer cast $3fff
Simplifying constant integer cast $40
Simplifying constant integer cast $3fff
Simplifying constant integer cast $400
Simplifying constant integer cast 1
Simplifying constant integer cast $b4
Simplifying constant integer cast $a0
Simplifying constant integer cast $64
@ -613,7 +600,6 @@ Simplifying constant integer cast 5
Simplifying constant integer cast 1
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 6
Simplifying constant integer cast 1
@ -636,7 +622,6 @@ Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) $40
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (word) $400
Finalized signed number type (signed byte) 1
Finalized signed number type (signed word) $b4
Finalized signed number type (signed word) $a0
Finalized signed number type (signed byte) $64
@ -644,7 +629,6 @@ Finalized signed number type (signed byte) 5
Finalized signed number type (signed byte) 1
Finalized signed number type (signed byte) 3
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 6
Finalized signed number type (signed byte) 1
@ -775,9 +759,9 @@ Constant inlined fill::val#0 = (byte) 0
Constant inlined plot::location#0 = (const byte*) BITMAP
Constant inlined fill::start#1 = (const byte*) SCREEN
Constant inlined fill::start#0 = (const byte*) BITMAP
Constant inlined circle::x1#0 = (signed byte) 0
Constant inlined circle::x1#0 = (signed word) 0
Constant inlined fill::val#1 = (byte) $16
Constant inlined main::i#0 = (signed byte) 1
Constant inlined main::i#0 = (signed word) 1
Constant inlined fill::size#1 = (signed word)(number) $28*(number) $19
Constant inlined fill::size#0 = (signed word)(number) $28*(number) $19*(number) 8
Successful SSA optimization Pass2ConstantInlining
@ -878,7 +862,7 @@ main::@5: scope:[main] from main::@4
[10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400
to:main::@1
main::@1: scope:[main] from main::@5 main::@6
[11] (signed word) main::i#2 ← phi( main::@5/(signed byte) 1 main::@6/(signed word) main::i#1 )
[11] (signed word) main::i#2 ← phi( main::@5/(signed word) 1 main::@6/(signed word) main::i#1 )
[12] if((signed word) main::i#2<(signed word) $b4) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@1 main::@3
@ -900,7 +884,7 @@ circle: scope:[circle] from main::@2
circle::@1: scope:[circle] from circle circle::@13
[19] (signed word) circle::p#3 ← phi( circle/(signed word) circle::p#0 circle::@13/(signed word) circle::p#10 )
[19] (signed word) circle::y#13 ← phi( circle/(signed word) circle::r#0 circle::@13/(signed word) circle::y#10 )
[19] (signed word) circle::x1#10 ← phi( circle/(signed byte) 0 circle::@13/(signed word) circle::x1#1 )
[19] (signed word) circle::x1#10 ← phi( circle/(signed word) 0 circle::@13/(signed word) circle::x1#1 )
[20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2
to:circle::@return
circle::@return: scope:[circle] from circle::@1
@ -1273,7 +1257,7 @@ main: {
sta VIC_MEMORY
// [11] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
__b1_from___b5:
// [11] phi (signed word) main::i#2 = (signed byte) 1 [phi:main::@5->main::@1#0] -- vwsz1=vbsc1
// [11] phi (signed word) main::i#2 = (signed word) 1 [phi:main::@5->main::@1#0] -- vwsz1=vwsc1
lda #<1
sta.z i
lda #>1
@ -1356,7 +1340,7 @@ circle: {
__b1_from_circle:
// [19] phi (signed word) circle::p#3 = (signed word) circle::p#0 [phi:circle->circle::@1#0] -- register_copy
// [19] phi (signed word) circle::y#13 = (signed word) circle::r#0 [phi:circle->circle::@1#1] -- register_copy
// [19] phi (signed word) circle::x1#10 = (signed byte) 0 [phi:circle->circle::@1#2] -- vwsz1=vbsc1
// [19] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1
lda #<0
sta.z x1
lda #>0
@ -2148,7 +2132,7 @@ main: {
sta VIC_MEMORY
// [11] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
__b1_from___b5:
// [11] phi (signed word) main::i#2 = (signed byte) 1 [phi:main::@5->main::@1#0] -- vwsz1=vbsc1
// [11] phi (signed word) main::i#2 = (signed word) 1 [phi:main::@5->main::@1#0] -- vwsz1=vwsc1
lda #<1
sta.z i
lda #>1
@ -2231,7 +2215,7 @@ circle: {
__b1_from_circle:
// [19] phi (signed word) circle::p#3 = (signed word) circle::p#0 [phi:circle->circle::@1#0] -- register_copy
// [19] phi (signed word) circle::y#13 = (signed word) circle::r#0 [phi:circle->circle::@1#1] -- register_copy
// [19] phi (signed word) circle::x1#10 = (signed byte) 0 [phi:circle->circle::@1#2] -- vwsz1=vbsc1
// [19] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1
lda #<0
sta.z x1
lda #>0
@ -2834,14 +2818,14 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*) 8192
(const byte) BLUE = (number) 6
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0 zp[2]:4 4.0
@ -3039,7 +3023,7 @@ main: {
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
// [11] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
// [11] phi (signed word) main::i#2 = (signed byte) 1 [phi:main::@5->main::@1#0] -- vwsz1=vbsc1
// [11] phi (signed word) main::i#2 = (signed word) 1 [phi:main::@5->main::@1#0] -- vwsz1=vwsc1
lda #<1
sta.z i
lda #>1
@ -3119,7 +3103,7 @@ circle: {
// [19] phi from circle to circle::@1 [phi:circle->circle::@1]
// [19] phi (signed word) circle::p#3 = (signed word) circle::p#0 [phi:circle->circle::@1#0] -- register_copy
// [19] phi (signed word) circle::y#13 = (signed word) circle::r#0 [phi:circle->circle::@1#1] -- register_copy
// [19] phi (signed word) circle::x1#10 = (signed byte) 0 [phi:circle->circle::@1#2] -- vwsz1=vbsc1
// [19] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1
lda #<0
sta.z x1
sta.z x1+1

View File

@ -2,14 +2,14 @@
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*) 8192
(const byte) BLUE = (number) 6
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0 zp[2]:4 4.0

View File

@ -34,7 +34,7 @@ circle: scope:[circle] from main::@3
circle::@1: scope:[circle] from circle circle::@13
[14] (signed word) circle::p#3 ← phi( circle/(signed byte) 3-(const signed word) circle::r#0<<(signed byte) 1 circle::@13/(signed word) circle::p#10 )
[14] (signed word) circle::y#13 ← phi( circle/(const signed word) circle::r#0 circle::@13/(signed word) circle::y#10 )
[14] (signed word) circle::x1#10 ← phi( circle/(signed byte) 0 circle::@13/(signed word) circle::x1#1 )
[14] (signed word) circle::x1#10 ← phi( circle/(signed word) 0 circle::@13/(signed word) circle::x1#1 )
[15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2
to:circle::@return
circle::@return: scope:[circle] from circle::@1

View File

@ -62,7 +62,7 @@ circle: scope:[circle] from main::@4
(signed word~) circle::$0 ← (signed word) circle::r#1 << (number) 1
(number~) circle::$1 ← (number) 3 - (signed word~) circle::$0
(signed word) circle::p#0 ← (number~) circle::$1
(signed word) circle::x1#0 ← (number) 0
(signed word) circle::x1#0 ← (signed word) 0
to:circle::@1
circle::@1: scope:[circle] from circle circle::@18
(signed word) circle::yc#12 ← phi( circle/(signed word) circle::yc#13 circle::@18/(signed word) circle::yc#14 )
@ -275,15 +275,15 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*)(number) $2000
(const byte) BLUE = (number) 6
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) D011 = (byte*)(number) $d011
(const byte*) SCREEN = (byte*)(number) $400
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
(const byte*) bitmask[] = { (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 }
(const byte) VIC_RSEL = (byte) 8
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0
(number~) circle::$1
@ -495,7 +495,6 @@ Adding number conversion cast (snumber) $32 in (signed word) circle::r#0 ← (nu
Adding number conversion cast (snumber) 1 in (signed word~) circle::$0 ← (signed word) circle::r#1 << (number) 1
Adding number conversion cast (snumber) 3 in (number~) circle::$1 ← (number) 3 - (signed word~) circle::$0
Adding number conversion cast (snumber) circle::$1 in (number~) circle::$1 ← (snumber)(number) 3 - (signed word~) circle::$0
Adding number conversion cast (snumber) 0 in (signed word) circle::x1#0 ← (number) 0
Adding number conversion cast (snumber) 0 in (bool~) circle::$3 ← (signed word) circle::p#3 < (number) 0
Adding number conversion cast (snumber) 2 in (signed word~) circle::$9 ← (signed word) circle::x1#3 << (number) 2
Adding number conversion cast (snumber) 6 in (number~) circle::$11 ← (signed word~) circle::$10 + (number) 6
@ -526,21 +525,12 @@ Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_BMM|(const byt
Inlining cast (signed word) circle::xc#0 ← (snumber)(number) $64
Inlining cast (signed word) circle::yc#0 ← (snumber)(number) $64
Inlining cast (signed word) circle::r#0 ← (snumber)(number) $32
Inlining cast (signed word) circle::x1#0 ← (snumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53280
Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast $80
Simplifying constant integer cast $40
Simplifying constant integer cast $20
Simplifying constant integer cast $10
Simplifying constant integer cast 8
Simplifying constant integer cast 4
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $16
Simplifying constant integer cast (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
@ -555,7 +545,6 @@ Simplifying constant integer cast $32
Simplifying constant integer cast 1
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 6
Simplifying constant integer cast 1
@ -580,7 +569,6 @@ Finalized signed number type (signed byte) $32
Finalized signed number type (signed byte) 1
Finalized signed number type (signed byte) 3
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 6
Finalized signed number type (signed byte) 1
@ -693,7 +681,7 @@ Constant inlined circle::$0 = (const signed word) circle::r#0<<(signed byte) 1
Constant inlined plot::location#0 = (const byte*) BITMAP
Constant inlined fill::start#1 = (const byte*) SCREEN
Constant inlined fill::start#0 = (const byte*) BITMAP
Constant inlined circle::x1#0 = (signed byte) 0
Constant inlined circle::x1#0 = (signed word) 0
Constant inlined fill::val#1 = (byte) $16
Constant inlined fill::size#1 = (signed word)(number) $28*(number) $19
Constant inlined fill::size#0 = (signed word)(number) $28*(number) $19*(number) 8
@ -803,7 +791,7 @@ circle: scope:[circle] from main::@3
circle::@1: scope:[circle] from circle circle::@13
[14] (signed word) circle::p#3 ← phi( circle/(signed byte) 3-(const signed word) circle::r#0<<(signed byte) 1 circle::@13/(signed word) circle::p#10 )
[14] (signed word) circle::y#13 ← phi( circle/(const signed word) circle::r#0 circle::@13/(signed word) circle::y#10 )
[14] (signed word) circle::x1#10 ← phi( circle/(signed byte) 0 circle::@13/(signed word) circle::x1#1 )
[14] (signed word) circle::x1#10 ← phi( circle/(signed word) 0 circle::@13/(signed word) circle::x1#1 )
[15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2
to:circle::@return
circle::@return: scope:[circle] from circle::@1
@ -1189,7 +1177,7 @@ circle: {
sta.z y
lda #>r
sta.z y+1
// [14] phi (signed word) circle::x1#10 = (signed byte) 0 [phi:circle->circle::@1#2] -- vwsz1=vbsc1
// [14] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1
lda #<0
sta.z x1
lda #>0
@ -1960,7 +1948,7 @@ circle: {
sta.z y
lda #>r
sta.z y+1
// [14] phi (signed word) circle::x1#10 = (signed byte) 0 [phi:circle->circle::@1#2] -- vwsz1=vbsc1
// [14] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1
lda #<0
sta.z x1
lda #>0
@ -2512,14 +2500,14 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*) 8192
(const byte) BLUE = (number) 6
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$10 zp[2]:2 22.0
@ -2738,7 +2726,7 @@ circle: {
sta.z y
lda #>r
sta.z y+1
// [14] phi (signed word) circle::x1#10 = (signed byte) 0 [phi:circle->circle::@1#2] -- vwsz1=vbsc1
// [14] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1
lda #<0
sta.z x1
sta.z x1+1

View File

@ -2,14 +2,14 @@
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*) 8192
(const byte) BLUE = (number) 6
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$10 zp[2]:2 22.0

View File

@ -44,7 +44,7 @@ CONTROL FLOW GRAPH SSA
(void()) bitmap_init((byte*) bitmap_init::bitmap)
bitmap_init: scope:[bitmap_init] from main
(byte*) bitmap_init::bitmap#2 ← phi( main/(byte*) bitmap_init::bitmap#0 )
(byte) bitmap_init::bits#0 ← (number) $80
(byte) bitmap_init::bits#0 ← (byte) $80
(byte) bitmap_init::x#0 ← (byte) 0
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
@ -146,8 +146,8 @@ bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1
(byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 )
(byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 )
(word) bitmap_plot::plotter_x#0 ← ((word)) { *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4), *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) }
(word) bitmap_plot::plotter_y#0 ← ((word)) { *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4), *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) }
(word) bitmap_plot::plotter_x#0 ← (word){ *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4), *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) }
(word) bitmap_plot::plotter_y#0 ← (word){ *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4), *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) }
(word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0
(byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$0
(byte~) bitmap_plot::$1 ← *((byte*) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4)
@ -601,7 +601,7 @@ bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
return
to:@return
@12: scope:[] from @begin
(byte) next#0 ← (number) 0
(byte) next#0 ← (byte) 0
to:@14
(void()) main()
@ -682,10 +682,10 @@ SYMBOL TABLE SSA
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) D011 = (byte*)(number) $d011
(const byte*) SCREEN = (byte*)(number) $400
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) bitmap_clear()
(byte*~) bitmap_clear::$0
(bool~) bitmap_clear::$1
@ -1207,7 +1207,6 @@ Fixing inline constructor with bitmap_clear::$3 ← (byte)*(bitmap_plot_xhi + 0)
Fixing inline constructor with bitmap_plot::$2 ← (byte)*(bitmap_plot_xhi + bitmap_plot::x#4) w= (byte)*(bitmap_plot_xlo + bitmap_plot::x#4)
Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#4)
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#0 ← (number) $80
Adding number conversion cast (unumber) $f8 in (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (number) $f8
Adding number conversion cast (unumber) bitmap_init::$0 in (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (unumber)(number) $f8
Adding number conversion cast (unumber) 1 in (byte~) bitmap_init::$2 ← (byte) bitmap_init::bits#3 >> (number) 1
@ -1235,7 +1234,6 @@ Adding number conversion cast (unumber) bitmap_line_ydxi::$6 in (number~) bitmap
Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd#2 >> (number) 1
Adding number conversion cast (unumber) 1 in (number~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (number) 1
Adding number conversion cast (unumber) bitmap_line_ydxd::$6 in (number~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (unumber)(number) 1
Adding number conversion cast (unumber) 0 in (byte) next#0 ← (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) BORDERCOL) ← (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) BGCOL) ← (number) 0
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
@ -1251,11 +1249,9 @@ Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const byte*) BITMAP&(unumber)(number) $3fff/(number) $400
Adding number conversion cast (unumber) $400 in *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(unumber)(number) $3fff/(unumber)(number) $40|(word)(const byte*) BITMAP&(unumber)(number) $3fff/(number) $400
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80
Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80
Inlining cast *((byte*) bitmap_clear::bitmap#2) ← (unumber)(number) 0
Inlining cast (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$0
Inlining cast (byte) next#0 ← (unumber)(number) 0
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 0
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 0
Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
@ -1270,7 +1266,6 @@ Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast $80
Simplifying constant integer cast $f8
Simplifying constant integer cast 1
Simplifying constant integer cast 0
@ -1298,7 +1293,6 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
@ -1311,7 +1305,6 @@ Simplifying constant integer cast $64
Simplifying constant integer cast $400
Simplifying constant integer cast $14
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $f8
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
@ -1332,7 +1325,6 @@ Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 3
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) $40
@ -4510,10 +4502,10 @@ FINAL SYMBOL TABLE
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) bitmap_clear()
(label) bitmap_clear::@1
(label) bitmap_clear::@2

View File

@ -6,10 +6,10 @@
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) bitmap_clear()
(label) bitmap_clear::@1
(label) bitmap_clear::@2

View File

@ -21,7 +21,7 @@ main::@3: scope:[main] from main
[10] call bitmap_clear
to:main::@1
main::@1: scope:[main] from main::@2 main::@3
[11] (word) next#5 ← phi( main::@2/(word) next#3 main::@3/(byte) 0 )
[11] (word) next#5 ← phi( main::@2/(word) next#3 main::@3/(word) 0 )
[12] (word) bitmap_line::x2#0 ← (word) next#5
[13] call bitmap_line
to:main::@4

View File

@ -94,7 +94,7 @@ bitmap_init: scope:[bitmap_init] from main
(byte*) bitmap_init::gfx#1 ← phi( main/(byte*) bitmap_init::gfx#0 )
(byte*) bitmap_gfx#1 ← (byte*) bitmap_init::gfx#1
(byte*) bitmap_screen#1 ← (byte*) bitmap_init::screen#1
(byte) bitmap_init::bits#0 ← (number) $80
(byte) bitmap_init::bits#0 ← (byte) $80
(byte) bitmap_init::x#0 ← (byte) 0
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
@ -504,7 +504,7 @@ sgn_u16::@return: scope:[sgn_u16] from sgn_u16::@1 sgn_u16::@3
@15: scope:[] from @9
(byte*) bitmap_screen#19 ← phi( @9/(byte*) bitmap_screen#0 )
(byte*) bitmap_gfx#20 ← phi( @9/(byte*) bitmap_gfx#0 )
(word) next#0 ← (number) 0
(word) next#0 ← (word) 0
to:@16
(void()) main()
@ -601,13 +601,13 @@ SYMBOL TABLE SSA
(const byte*) BITMAP = (byte*)(number) $2000
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) D011 = (byte*)(number) $d011
(const byte) PURPLE = (number) 4
(const byte) PURPLE = (byte) 4
(const byte*) SCREEN = (byte*)(number) $400
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0
(number~) abs_u16::$1
@ -1072,7 +1072,6 @@ SYMBOL TABLE SSA
Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#4)
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#0 ← (number) $80
Adding number conversion cast (unumber) 1 in (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1
Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#2 ← (number) $80
@ -1103,7 +1102,6 @@ Adding number conversion cast (unumber) sgn_u16::$1 in (number~) sgn_u16::$1 ←
Adding number conversion cast (unumber) 0 in (bool~) sgn_u16::$2 ← (number) 0 != (unumber~) sgn_u16::$1
Adding number conversion cast (unumber) -1 in (word) sgn_u16::return#2 ← (number) -1
Adding number conversion cast (unumber) 1 in (word) sgn_u16::return#3 ← (number) 1
Adding number conversion cast (unumber) 0 in (word) next#0 ← (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) BORDERCOL) ← (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) BGCOL) ← (number) 0
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
@ -1121,7 +1119,6 @@ Adding number conversion cast (unumber) $400 in *((const byte*) VIC_MEMORY) ←
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3
Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80
Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80
Inlining cast (byte) memset::c#1 ← (unumber)(number) 0
Inlining cast (byte~) bitmap_line::$15 ← (byte)(word) bitmap_line::y#3
@ -1130,7 +1127,6 @@ Inlining cast (byte~) bitmap_line::$13 ← (byte)(word) bitmap_line::y#7
Inlining cast (byte~) bitmap_line::$24 ← (byte)(word) bitmap_line::y#8
Inlining cast (word) sgn_u16::return#2 ← (unumber)(number) -1
Inlining cast (word) sgn_u16::return#3 ← (unumber)(number) 1
Inlining cast (word) next#0 ← (unumber)(number) 0
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 0
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 0
Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
@ -1146,7 +1142,6 @@ Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $80
@ -1170,7 +1165,6 @@ Simplifying constant integer cast -1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
@ -1184,7 +1178,6 @@ Simplifying constant integer cast $140
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
@ -1206,7 +1199,6 @@ Finalized unsigned number type (byte) -1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 3
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) $40
@ -1525,7 +1517,7 @@ Constant inlined abs_u16::w#1 = (const word) bitmap_line::y2#0
Constant inlined bitmap_plot::y#0 = (byte) 0
Constant inlined sgn_u16::return#3 = (byte) 1
Constant inlined sgn_u16::return#2 = (byte) -1
Constant inlined next#0 = (byte) 0
Constant inlined next#0 = (word) 0
Constant inlined next#2 = (byte) 0
Constant inlined memset::str#1 = (void*)(const byte*) BITMAP
Constant inlined memset::str#0 = (void*)(const byte*) SCREEN
@ -1702,7 +1694,7 @@ main::@3: scope:[main] from main
[10] call bitmap_clear
to:main::@1
main::@1: scope:[main] from main::@2 main::@3
[11] (word) next#5 ← phi( main::@2/(word) next#3 main::@3/(byte) 0 )
[11] (word) next#5 ← phi( main::@2/(word) next#3 main::@3/(word) 0 )
[12] (word) bitmap_line::x2#0 ← (word) next#5
[13] call bitmap_line
to:main::@4
@ -2250,7 +2242,7 @@ main: {
jsr bitmap_clear
// [11] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
__b1_from___b3:
// [11] phi (word) next#5 = (byte) 0 [phi:main::@3->main::@1#0] -- vwuz1=vbuc1
// [11] phi (word) next#5 = (word) 0 [phi:main::@3->main::@1#0] -- vwuz1=vwuc1
lda #<0
sta.z next
lda #>0
@ -3362,7 +3354,7 @@ main: {
jsr bitmap_clear
// [11] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
__b1_from___b3:
// [11] phi (word) next#5 = (byte) 0 [phi:main::@3->main::@1#0] -- vwuz1=vbuc1
// [11] phi (word) next#5 = (word) 0 [phi:main::@3->main::@1#0] -- vwuz1=vwuc1
lda #<0
sta.z next
lda #>0
@ -4287,13 +4279,13 @@ FINAL SYMBOL TABLE
(const byte*) BITMAP = (byte*) 8192
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte) PURPLE = (number) 4
(const byte) PURPLE = (byte) 4
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0 reg byte a 4.0
(byte~) abs_u16::$1 reg byte a 4.0
@ -4551,7 +4543,7 @@ main: {
// [87] phi from main::@3 to bitmap_clear [phi:main::@3->bitmap_clear]
jsr bitmap_clear
// [11] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
// [11] phi (word) next#5 = (byte) 0 [phi:main::@3->main::@1#0] -- vwuz1=vbuc1
// [11] phi (word) next#5 = (word) 0 [phi:main::@3->main::@1#0] -- vwuz1=vwuc1
lda #<0
sta.z next
sta.z next+1

View File

@ -5,13 +5,13 @@
(const byte*) BITMAP = (byte*) 8192
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte) PURPLE = (number) 4
(const byte) PURPLE = (byte) 4
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0 reg byte a 4.0
(byte~) abs_u16::$1 reg byte a 4.0

View File

@ -32,9 +32,9 @@ main::@7: scope:[main] from main::toD0181
to:main::@1
main::@1: scope:[main] from main::@4 main::@7
[13] (byte) main::vy#2 ← phi( main::@7/(byte) 1 main::@4/(byte) main::vy#8 )
[13] (word) main::vx#2 ← phi( main::@7/(byte) 1 main::@4/(word) main::vx#6 )
[13] (word) main::vx#2 ← phi( main::@7/(word) 1 main::@4/(word) main::vx#6 )
[13] (byte) main::y#2 ← phi( main::@7/(byte) 0 main::@4/(byte) main::y#1 )
[13] (word) main::x#2 ← phi( main::@7/(byte) 0 main::@4/(word) main::x#1 )
[13] (word) main::x#2 ← phi( main::@7/(word) 0 main::@4/(word) main::x#1 )
to:main::@2
main::@2: scope:[main] from main::@1
[14] (word) bitmap_plot::x#0 ← (word) main::x#2

View File

@ -96,7 +96,7 @@ bitmap_init: scope:[bitmap_init] from main
(byte*) bitmap_init::gfx#1 ← phi( main/(byte*) bitmap_init::gfx#0 )
(byte*) bitmap_gfx#1 ← (byte*) bitmap_init::gfx#1
(byte*) bitmap_screen#1 ← (byte*) bitmap_init::screen#1
(byte) bitmap_init::bits#0 ← (number) $80
(byte) bitmap_init::bits#0 ← (byte) $80
(byte) bitmap_init::x#0 ← (byte) 0
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
@ -277,10 +277,10 @@ main::@11: scope:[main] from main::toD0181_@return
main::@14: scope:[main] from main::@11
(byte*) bitmap_screen#17 ← phi( main::@11/(byte*) bitmap_screen#21 )
(byte*) bitmap_gfx#18 ← phi( main::@11/(byte*) bitmap_gfx#22 )
(word) main::x#0 ← (number) 0
(byte) main::y#0 ← (number) 0
(word) main::vx#0 ← (number) 1
(byte) main::vy#0 ← (number) 1
(word) main::x#0 ← (word) 0
(byte) main::y#0 ← (byte) 0
(word) main::vx#0 ← (word) 1
(byte) main::vy#0 ← (byte) 1
to:main::@1
main::@1: scope:[main] from main::@14 main::@5
(byte) main::vy#6 ← phi( main::@14/(byte) main::vy#0 main::@5/(byte) main::vy#8 )
@ -369,7 +369,7 @@ main::@return: scope:[main] from main::@1
@16: scope:[] from @9
(byte*) bitmap_screen#19 ← phi( @9/(byte*) bitmap_screen#0 )
(byte*) bitmap_gfx#20 ← phi( @9/(byte*) bitmap_gfx#0 )
(byte) frame_cnt ← (number) 1
(byte) frame_cnt ← (byte) 1
to:@18
(void()) init_irq()
@ -427,26 +427,26 @@ SYMBOL TABLE SSA
(label) @end
(const byte*) BGCOL = (byte*)(number) $d021
(const byte*) BITMAP = (byte*)(number) $2000
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) CIA1_INTERRUPT = (byte*)(number) $dc0d
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const byte*) D011 = (byte*)(number) $d011
(const byte*) D018 = (byte*)(number) $d018
(const void()**) HARDWARE_IRQ = (void()**)(number) $fffe
(const byte*) IRQ_ENABLE = (byte*)(number) $d01a
(const byte) IRQ_RASTER = (number) 1
(const byte) IRQ_RASTER = (byte) 1
(const byte*) IRQ_STATUS = (byte*)(number) $d019
(const byte*) PROCPORT = (byte*)(number) 1
(const byte*) PROCPORT_DDR = (byte*)(number) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CONTROL = (byte*)(number) $d011
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(number~) bitmap_clear::$0
(number~) bitmap_clear::$1
@ -748,7 +748,6 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#1) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#1)
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#0 ← (number) $80
Adding number conversion cast (unumber) 1 in (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1
Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#2 ← (number) $80
@ -777,32 +776,21 @@ Adding number conversion cast (unumber) main::toD0181_$6 in (number~) main::toD0
Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (number) $f
Adding number conversion cast (unumber) main::toD0181_$7 in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (unumber)(number) $f
Adding number conversion cast (unumber) main::toD0181_$8 in (number~) main::toD0181_$8 ← (unumber~) main::toD0181_$3 | (unumber~) main::toD0181_$7
Adding number conversion cast (unumber) 0 in (word) main::x#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) main::y#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (word) main::vx#0 ← (number) 1
Adding number conversion cast (unumber) 1 in (byte) main::vy#0 ← (number) 1
Adding number conversion cast (unumber) $13f in (bool~) main::$5 ← (word) main::x#1 == (number) $13f
Adding number conversion cast (unumber) 0 in (bool~) main::$6 ← (word) main::x#1 == (number) 0
Adding number conversion cast (unumber) $c7 in (bool~) main::$10 ← (byte) main::y#4 == (number) $c7
Adding number conversion cast (unumber) 0 in (bool~) main::$11 ← (byte) main::y#4 == (number) 0
Adding number conversion cast (unumber) 1 in (byte) frame_cnt ← (number) 1
Adding number conversion cast (unumber) $80 in *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (number) $80
Adding number conversion cast (unumber) 0 in *((const byte*) RASTER) ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) irq::$1 ← (number) 0 != (byte) frame_cnt
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3
Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80
Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80
Inlining cast (byte) memset::c#1 ← (unumber)(number) 0
Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1
Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1
Inlining cast (word) main::x#0 ← (unumber)(number) 0
Inlining cast (byte) main::y#0 ← (unumber)(number) 0
Inlining cast (word) main::vx#0 ← (unumber)(number) 1
Inlining cast (byte) main::vy#0 ← (unumber)(number) 1
Inlining cast (byte) frame_cnt ← (unumber)(number) 1
Inlining cast *((const byte*) RASTER) ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 0
@ -819,7 +807,6 @@ Simplifying constant pointer cast (void()**) 65534
Simplifying constant pointer cast (byte*) 8192
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $80
@ -837,21 +824,15 @@ Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $13f
Simplifying constant integer cast 0
Simplifying constant integer cast $c7
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
@ -866,15 +847,10 @@ Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (word) $13f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $c7
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
@ -1132,7 +1108,7 @@ Constant inlined main::toD0181_$2 = (word)(const byte*) SCREEN&(word) $3fff*(byt
Constant inlined main::toD0181_$1 = (word)(const byte*) SCREEN&(word) $3fff
Constant inlined bitmap_gfx#1 = (const byte*) BITMAP
Constant inlined main::toD0181_$0 = (word)(const byte*) SCREEN
Constant inlined main::x#0 = (byte) 0
Constant inlined main::x#0 = (word) 0
Constant inlined bitmap_clear::fgcol#0 = (const byte) WHITE
Constant inlined main::y#0 = (byte) 0
Constant inlined main::toD0181_$6 = >(word)(const byte*) BITMAP/(byte) 4
@ -1141,7 +1117,7 @@ Constant inlined main::toD0181_$4 = (word)(const byte*) BITMAP
Constant inlined main::toD0181_$3 = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4
Constant inlined bitmap_screen#1 = (const byte*) SCREEN
Constant inlined main::vy#0 = (byte) 1
Constant inlined main::vx#0 = (byte) 1
Constant inlined main::vx#0 = (word) 1
Constant inlined bitmap_init::y#0 = (byte) 0
Constant inlined memset::c#0 = (const byte) bitmap_clear::col#0
Constant inlined bitmap_init::x#0 = (byte) 0
@ -1271,9 +1247,9 @@ main::@7: scope:[main] from main::toD0181
to:main::@1
main::@1: scope:[main] from main::@4 main::@7
[13] (byte) main::vy#2 ← phi( main::@7/(byte) 1 main::@4/(byte) main::vy#8 )
[13] (word) main::vx#2 ← phi( main::@7/(byte) 1 main::@4/(word) main::vx#6 )
[13] (word) main::vx#2 ← phi( main::@7/(word) 1 main::@4/(word) main::vx#6 )
[13] (byte) main::y#2 ← phi( main::@7/(byte) 0 main::@4/(byte) main::y#1 )
[13] (word) main::x#2 ← phi( main::@7/(byte) 0 main::@4/(word) main::x#1 )
[13] (word) main::x#2 ← phi( main::@7/(word) 0 main::@4/(word) main::x#1 )
to:main::@2
main::@2: scope:[main] from main::@1
[14] (word) bitmap_plot::x#0 ← (word) main::x#2
@ -1689,7 +1665,7 @@ main: {
// [13] phi (byte) main::vy#2 = (byte) 1 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1
lda #1
sta.z vy
// [13] phi (word) main::vx#2 = (byte) 1 [phi:main::@7->main::@1#1] -- vwuz1=vbuc1
// [13] phi (word) main::vx#2 = (word) 1 [phi:main::@7->main::@1#1] -- vwuz1=vwuc1
lda #<1
sta.z vx
lda #>1
@ -1697,7 +1673,7 @@ main: {
// [13] phi (byte) main::y#2 = (byte) 0 [phi:main::@7->main::@1#2] -- vbuz1=vbuc1
lda #0
sta.z y
// [13] phi (word) main::x#2 = (byte) 0 [phi:main::@7->main::@1#3] -- vwuz1=vbuc1
// [13] phi (word) main::x#2 = (word) 0 [phi:main::@7->main::@1#3] -- vwuz1=vwuc1
lda #<0
sta.z x
lda #>0
@ -2462,7 +2438,7 @@ main: {
// [13] phi (byte) main::vy#2 = (byte) 1 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1
lda #1
sta.z vy
// [13] phi (word) main::vx#2 = (byte) 1 [phi:main::@7->main::@1#1] -- vwuz1=vbuc1
// [13] phi (word) main::vx#2 = (word) 1 [phi:main::@7->main::@1#1] -- vwuz1=vwuc1
lda #<1
sta.z vx
lda #>1
@ -2470,7 +2446,7 @@ main: {
// [13] phi (byte) main::y#2 = (byte) 0 [phi:main::@7->main::@1#2] -- vbuz1=vbuc1
lda #0
sta.z y
// [13] phi (word) main::x#2 = (byte) 0 [phi:main::@7->main::@1#3] -- vwuz1=vbuc1
// [13] phi (word) main::x#2 = (word) 0 [phi:main::@7->main::@1#3] -- vwuz1=vwuc1
lda #<0
sta.z x
lda #>0
@ -3032,26 +3008,26 @@ FINAL SYMBOL TABLE
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte*) BITMAP = (byte*) 8192
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) CIA1_INTERRUPT = (byte*) 56333
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const byte*) D011 = (byte*) 53265
(const byte*) D018 = (byte*) 53272
(const void()**) HARDWARE_IRQ = (void()**) 65534
(const byte*) IRQ_ENABLE = (byte*) 53274
(const byte) IRQ_RASTER = (number) 1
(const byte) IRQ_RASTER = (byte) 1
(const byte*) IRQ_STATUS = (byte*) 53273
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(label) bitmap_clear::@1
(label) bitmap_clear::@return
@ -3277,13 +3253,13 @@ main: {
// [13] phi (byte) main::vy#2 = (byte) 1 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1
lda #1
sta.z vy
// [13] phi (word) main::vx#2 = (byte) 1 [phi:main::@7->main::@1#1] -- vwuz1=vbuc1
// [13] phi (word) main::vx#2 = (word) 1 [phi:main::@7->main::@1#1] -- vwuz1=vwuc1
sta.z vx
lda #>1
sta.z vx+1
// [13] phi (byte) main::y#2 = (byte) 0 [phi:main::@7->main::@1#2] -- vbuz1=vbuc1
sta.z y
// [13] phi (word) main::x#2 = (byte) 0 [phi:main::@7->main::@1#3] -- vwuz1=vbuc1
// [13] phi (word) main::x#2 = (word) 0 [phi:main::@7->main::@1#3] -- vwuz1=vwuc1
sta.z x
sta.z x+1
// main::@1

View File

@ -4,26 +4,26 @@
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte*) BITMAP = (byte*) 8192
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) CIA1_INTERRUPT = (byte*) 56333
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const byte*) D011 = (byte*) 53265
(const byte*) D018 = (byte*) 53272
(const void()**) HARDWARE_IRQ = (void()**) 65534
(const byte*) IRQ_ENABLE = (byte*) 53274
(const byte) IRQ_RASTER = (number) 1
(const byte) IRQ_RASTER = (byte) 1
(const byte*) IRQ_STATUS = (byte*) 53273
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(label) bitmap_clear::@1
(label) bitmap_clear::@return

View File

@ -43,9 +43,9 @@
.const SIZEOF_SIGNED_WORD = 2
.label BITMAP = $2000
.label SCREEN = $400
.label frame_cnt = $12
.label frame_cnt = $e
// Remainder after unsigned 16-bit division
.label rem16u = $c
.label rem16u = $13
__b1:
// Counts frames - updated by the IRQ
lda #1
@ -54,20 +54,20 @@ __b1:
rts
main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
.label __6 = 8
.label __11 = 8
.label __22 = $24
.label __23 = $24
.label cos_x = $24
.label xpos = 8
.label x = $1c
.label sin_y = $24
.label ypos = 8
.label y = $13
.label idx_x = 2
.label idx_y = $e
.label __24 = $24
.label __25 = $24
.label __6 = 6
.label __11 = 6
.label __22 = $a
.label __23 = $a
.label cos_x = $a
.label xpos = 6
.label x = $f
.label sin_y = $a
.label ypos = 6
.label y = $11
.label idx_x = $c
.label idx_y = $20
.label __24 = $a
.label __25 = $a
jsr sin16s_gen2
jsr bitmap_init
jsr bitmap_clear
@ -218,11 +218,11 @@ main: {
jmp __b2
}
// Plot a single dot in the bitmap
// bitmap_plot(word zp($1c) x, byte register(X) y)
// bitmap_plot(word zp($f) x, byte register(X) y)
bitmap_plot: {
.label __1 = $15
.label plotter = $13
.label x = $1c
.label __1 = $13
.label plotter = $11
.label x = $f
lda bitmap_plot_yhi,x
sta.z plotter+1
lda bitmap_plot_ylo,x
@ -250,16 +250,16 @@ bitmap_plot: {
}
// Multiply of two signed words to a signed double word
// Fixes offsets introduced by using unsigned multiplication
// mul16s(signed word zp($13) a, signed word zp($24) b)
// mul16s(signed word zp($11) a, signed word zp($a) b)
mul16s: {
.label __9 = $15
.label __13 = $22
.label __16 = $15
.label __17 = $13
.label m = 8
.label return = 8
.label a = $13
.label b = $24
.label __9 = $13
.label __13 = $1a
.label __16 = $13
.label __17 = $11
.label m = 6
.label return = 6
.label a = $11
.label b = $a
lda.z a
sta.z mul16u.a
lda.z a+1
@ -268,13 +268,6 @@ mul16s: {
sta.z mul16u.b
lda.z b+1
sta.z mul16u.b+1
lda.z mul16u.b
sta.z mul16u.mb
lda.z mul16u.b+1
sta.z mul16u.mb+1
lda #0
sta.z mul16u.mb+2
sta.z mul16u.mb+3
jsr mul16u
lda.z a+1
bpl __b1
@ -315,18 +308,25 @@ mul16s: {
rts
}
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
// mul16u(word zp($c) a, word zp($15) b)
// mul16u(word zp($1a) a, word zp($13) b)
mul16u: {
.label mb = $1e
.label a = $c
.label res = 8
.label b = $15
.label return = 8
.label b_1 = 2
.label mb = $1c
.label a = $1a
.label res = 6
.label b = $13
.label return = 6
lda.z b
sta.z mb
lda.z b+1
sta.z mb+1
lda #0
sta.z mb+2
sta.z mb+3
sta.z res
sta.z res+1
lda #<0>>$10
sta.z res+2
lda #>0>>$10
sta.z res+3
__b1:
lda.z a
@ -417,12 +417,12 @@ bitmap_clear: {
rts
}
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zp($13) str, byte register(X) c, word zp($e) num)
// memset(void* zp($20) str, byte register(X) c, word zp($c) num)
memset: {
.label end = $e
.label dst = $13
.label num = $e
.label str = $13
.label end = $c
.label dst = $20
.label num = $c
.label str = $20
lda.z num
bne !+
lda.z num+1
@ -456,8 +456,8 @@ memset: {
}
// Initialize bitmap plotting tables
bitmap_init: {
.label __7 = $17
.label yoffs = $24
.label __7 = $15
.label yoffs = $11
ldx #0
lda #$80
__b1:
@ -502,30 +502,33 @@ bitmap_init: {
// Generate signed word sinus table - with values in the range min-max.
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
// sin16s_gen2(signed word* zp($10) sintab)
// sin16s_gen2(signed word* zp($f) sintab)
sin16s_gen2: {
.label wavelength = $200
.const min = -$1001
.const max = $1001
.const ampl = max-min
.label __6 = 8
.label __9 = $1c
.label step = $18
.label sintab = $10
.label __6 = 6
.label __9 = $1a
.label step = $16
.label sintab = $f
// u[4.28]
// Iterate over the table
.label x = 4
.label i = $e
.label x = 2
.label i = $c
jsr div32u16u
lda #<SINUS
sta.z sintab
lda #>SINUS
sta.z sintab+1
lda #0
lda #<0
sta.z x
sta.z x+1
lda #<0>>$10
sta.z x+2
lda #>0>>$10
sta.z x+3
lda #<0
sta.z i
sta.z i+1
// u[4.28]
@ -593,20 +596,20 @@ sin16s_gen2: {
// Calculate signed word sinus sin(x)
// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28
// result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff
// sin16s(dword zp(8) x)
// sin16s(dword zp(6) x)
sin16s: {
.label __4 = $1e
.label x = 8
.label return = $13
.label __4 = $1c
.label x = 6
.label return = $11
.label x1 = $22
.label x2 = $15
.label x3 = $15
.label x3_6 = $24
.label usinx = $13
.label x4 = $15
.label x5 = $24
.label x5_128 = $24
.label sinx = $13
.label x2 = $a
.label x3 = $a
.label x3_6 = $20
.label usinx = $11
.label x4 = $a
.label x5 = $20
.label x5_128 = $20
.label sinx = $11
lda.z x+3
cmp #>PI_u4f28>>$10
bcc b1
@ -777,25 +780,18 @@ sin16s: {
}
// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result.
// The select parameter indicates how many of the highest bits of the 32-bit result to skip
// mulu16_sel(word zp($15) v1, word zp(2) v2, byte register(X) select)
// mulu16_sel(word zp($a) v1, word zp($13) v2, byte register(X) select)
mulu16_sel: {
.label __0 = 8
.label __1 = 8
.label v1 = $15
.label v2 = 2
.label return = $24
.label return_1 = $15
.label __0 = 6
.label __1 = 6
.label v1 = $a
.label v2 = $13
.label return = $20
.label return_1 = $a
lda.z v1
sta.z mul16u.a
lda.z v1+1
sta.z mul16u.a+1
lda.z mul16u.b_1
sta.z mul16u.mb
lda.z mul16u.b_1+1
sta.z mul16u.mb+1
lda #0
sta.z mul16u.mb+2
sta.z mul16u.mb+3
jsr mul16u
cpx #0
beq !e+
@ -816,9 +812,9 @@ mulu16_sel: {
// Divide unsigned 32-bit dword dividend with a 16-bit word divisor
// The 16-bit word remainder can be found in rem16u after the division
div32u16u: {
.label quotient_hi = $24
.label quotient_lo = $10
.label return = $18
.label quotient_hi = $22
.label quotient_lo = $c
.label return = $16
lda #<PI2_u4f28>>$10
sta.z divr16u.dividend
lda #>PI2_u4f28>>$10
@ -850,12 +846,12 @@ div32u16u: {
// Returns the quotient dividend/divisor.
// The final remainder will be set into the global variable rem16u
// Implemented using simple binary division
// divr16u(word zp($e) dividend, word zp($c) rem)
// divr16u(word zp($1a) dividend, word zp($13) rem)
divr16u: {
.label rem = $c
.label dividend = $e
.label quotient = $10
.label return = $10
.label rem = $13
.label dividend = $1a
.label quotient = $c
.label return = $c
ldx #0
txa
sta.z quotient

View File

@ -35,8 +35,8 @@ main::@5: scope:[main] from main::toD0181
[14] call init_irq
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
[15] (word) main::idx_y#3 ← phi( main::@5/(byte) $80 main::@4/(word) main::idx_y#10 )
[15] (word) main::idx_x#3 ← phi( main::@5/(byte) 0 main::@4/(word) main::idx_x#10 )
[15] (word) main::idx_y#3 ← phi( main::@5/(word) $80 main::@4/(word) main::idx_y#10 )
[15] (word) main::idx_x#3 ← phi( main::@5/(word) 0 main::@4/(word) main::idx_x#10 )
to:main::@2
main::@2: scope:[main] from main::@1
[16] (word~) main::$22 ← (word) main::idx_x#3 << (byte) 1
@ -137,324 +137,325 @@ mul16s::@return: scope:[mul16s] from mul16s::@2
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
mul16u: scope:[mul16u] from mul16s mulu16_sel
[72] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 )
[72] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 )
[72] (word) mul16u::b#2 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 )
[73] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
[73] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
[73] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
[73] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
[74] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
[74] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
[74] (dword) mul16u::res#2 ← phi( mul16u/(dword) 0 mul16u::@3/(dword) mul16u::res#6 )
[74] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
[75] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
[75] return
[76] return
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
[76] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
[77] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
[77] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
[78] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2
[78] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
[79] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
to:mul16u::@3
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
[79] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[80] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
[81] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
[80] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[81] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
[82] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
to:mul16u::@1
(void()) init_irq()
init_irq: scope:[init_irq] from main::@5
asm { sei }
[83] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK
[84] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO
[85] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR
[86] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80
[87] *((const byte*) RASTER) ← (byte) 0
[88] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER
[89] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
[84] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK
[85] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO
[86] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR
[87] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80
[88] *((const byte*) RASTER) ← (byte) 0
[89] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER
[90] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
asm { cli }
to:init_irq::@return
init_irq::@return: scope:[init_irq] from init_irq
[91] return
[92] return
to:@return
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
bitmap_clear: scope:[bitmap_clear] from main::@7
[92] phi()
[93] call memset
[93] phi()
[94] call memset
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
[94] phi()
[95] call memset
[95] phi()
[96] call memset
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
[96] return
[97] return
to:@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
[97] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
[97] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP )
[97] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
[98] if((word) memset::num#2<=(byte) 0) goto memset::@return
[98] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
[98] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP )
[98] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
[99] if((word) memset::num#2<=(byte) 0) goto memset::@return
to:memset::@1
memset::@1: scope:[memset] from memset
[99] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
[100] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
[100] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
[101] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[101] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
[102] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
[102] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
[103] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset memset::@2
[103] return
[104] return
to:@return
memset::@3: scope:[memset] from memset::@2
[104] *((byte*) memset::dst#2) ← (byte) memset::c#4
[105] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
[105] *((byte*) memset::dst#2) ← (byte) memset::c#4
[106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
to:memset::@2
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
bitmap_init: scope:[bitmap_init] from main::@6
[106] phi()
[107] phi()
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[107] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
[107] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
[108] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
[109] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
[110] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
[108] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
[108] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
[109] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
[110] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
[111] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
[111] phi()
[112] phi()
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
[112] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
[113] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
[114] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
[113] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
[114] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
[115] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[115] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
[115] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
[116] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
[117] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
[118] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
[119] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
[120] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
[121] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
[122] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
[116] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
[116] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
[117] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
[118] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
[119] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
[120] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
[121] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
[122] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
[123] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
[123] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
[124] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
[124] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
[125] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
[126] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
[125] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
[126] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
[127] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[127] return
[128] return
to:@return
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
sin16s_gen2: scope:[sin16s_gen2] from main
[128] phi()
[129] call div32u16u
[130] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
[129] phi()
[130] call div32u16u
[131] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
to:sin16s_gen2::@3
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2
[131] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
[132] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@3 sin16s_gen2::@5
[132] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@3/(const signed word*) SINUS sin16s_gen2::@5/(signed word*) sin16s_gen2::sintab#0 )
[132] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@3/(byte) 0 sin16s_gen2::@5/(dword) sin16s_gen2::x#1 )
[132] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@3/(byte) 0 sin16s_gen2::@5/(word) sin16s_gen2::i#1 )
[133] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2
[133] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@3/(const signed word*) SINUS sin16s_gen2::@5/(signed word*) sin16s_gen2::sintab#0 )
[133] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@3/(dword) 0 sin16s_gen2::@5/(dword) sin16s_gen2::x#1 )
[133] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@3/(word) 0 sin16s_gen2::@5/(word) sin16s_gen2::i#1 )
[134] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2
to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@1
[134] return
[135] return
to:@return
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1
[135] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
[136] call sin16s
[137] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
[136] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
[137] call sin16s
[138] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
to:sin16s_gen2::@4
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@2
[138] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
[139] call mul16s
[140] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
[139] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
[140] call mul16s
[141] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
to:sin16s_gen2::@5
sin16s_gen2::@5: scope:[sin16s_gen2] from sin16s_gen2::@4
[141] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2
[142] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6
[143] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9
[144] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[145] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
[146] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
[142] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2
[143] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6
[144] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9
[145] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[146] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
[147] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
to:sin16s_gen2::@1
(signed word()) sin16s((dword) sin16s::x)
sin16s: scope:[sin16s] from sin16s_gen2::@2
[147] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1
[148] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1
to:sin16s::@4
sin16s::@4: scope:[sin16s] from sin16s
[148] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28
[149] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28
to:sin16s::@1
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
[149] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
[149] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[150] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2
[150] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
[150] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[151] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2
to:sin16s::@5
sin16s::@5: scope:[sin16s] from sin16s::@1
[151] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4
[152] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4
to:sin16s::@2
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
[152] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[153] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
[154] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
[155] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[156] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[157] call mulu16_sel
[158] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
[153] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[154] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
[155] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
[156] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[157] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[158] call mulu16_sel
[159] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
to:sin16s::@7
sin16s::@7: scope:[sin16s] from sin16s::@2
[159] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[160] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[161] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[162] call mulu16_sel
[163] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
[160] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[161] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[162] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[163] call mulu16_sel
[164] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
to:sin16s::@8
sin16s::@8: scope:[sin16s] from sin16s::@7
[164] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[165] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[166] call mulu16_sel
[167] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
[165] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[166] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[167] call mulu16_sel
[168] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
to:sin16s::@9
sin16s::@9: scope:[sin16s] from sin16s::@8
[168] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
[169] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[170] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[171] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[172] call mulu16_sel
[173] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
[169] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
[170] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[171] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[172] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[173] call mulu16_sel
[174] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
to:sin16s::@10
sin16s::@10: scope:[sin16s] from sin16s::@9
[174] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
[175] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[176] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[177] call mulu16_sel
[178] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
[175] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
[176] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[177] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[178] call mulu16_sel
[179] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
to:sin16s::@11
sin16s::@11: scope:[sin16s] from sin16s::@10
[179] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
[180] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
[181] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[182] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
[180] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
[181] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
[182] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[183] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
to:sin16s::@6
sin16s::@6: scope:[sin16s] from sin16s::@11
[183] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
[184] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
to:sin16s::@3
sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6
[184] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
[185] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
to:sin16s::@return
sin16s::@return: scope:[sin16s] from sin16s::@3
[185] return
[186] return
to:@return
sin16s::@12: scope:[sin16s] from sin16s::@11
[186] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
[187] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
to:sin16s::@3
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
[187] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
[187] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
[187] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
[188] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
[189] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
[190] call mul16u
[191] (dword) mul16u::return#3 ← (dword) mul16u::res#2
[188] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
[188] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
[188] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
[189] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
[190] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
[191] call mul16u
[192] (dword) mul16u::return#3 ← (dword) mul16u::res#2
to:mulu16_sel::@1
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
[192] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
[193] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
[194] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
[193] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
[194] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
[195] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
[195] return
[196] return
to:@return
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
div32u16u: scope:[div32u16u] from sin16s_gen2
[196] phi()
[197] call divr16u
[198] (word) divr16u::return#2 ← (word) divr16u::return#0
[197] phi()
[198] call divr16u
[199] (word) divr16u::return#2 ← (word) divr16u::return#0
to:div32u16u::@1
div32u16u::@1: scope:[div32u16u] from div32u16u
[199] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[200] (word) divr16u::rem#4 ← (word) rem16u#1
[201] call divr16u
[202] (word) divr16u::return#3 ← (word) divr16u::return#0
[200] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[201] (word) divr16u::rem#4 ← (word) rem16u#1
[202] call divr16u
[203] (word) divr16u::return#3 ← (word) divr16u::return#0
to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
[203] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[204] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
[204] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[205] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@2
[205] return
[206] return
to:@return
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
[206] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28 div32u16u::@1/<(const dword) PI2_u4f28 )
[206] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
[207] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28 div32u16u::@1/<(const dword) PI2_u4f28 )
[207] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[207] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[207] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[207] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[207] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[208] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[209] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[210] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[211] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
[208] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[208] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 )
[208] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[208] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[209] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[210] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[211] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[212] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[212] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
[213] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[213] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[214] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[215] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[216] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
[214] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[215] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[216] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[217] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[217] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[218] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0
[218] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[219] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[219] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[219] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[220] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[221] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
[220] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[220] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[221] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[222] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3
[222] (word) rem16u#1 ← (word) divr16u::rem#11
[223] (word) rem16u#1 ← (word) divr16u::rem#11
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
[223] return
[224] return
to:@return
interrupt(HARDWARE_CLOBBER)(void()) irq()
irq: scope:[irq] from
[224] *((const byte*) BGCOL) ← (const byte) WHITE
[225] if((byte) 0==(byte) frame_cnt) goto irq::@1
[225] *((const byte*) BGCOL) ← (const byte) WHITE
[226] if((byte) 0==(byte) frame_cnt) goto irq::@1
to:irq::@2
irq::@2: scope:[irq] from irq
[226] (byte) frame_cnt ← ++ (byte) frame_cnt
[227] (byte) frame_cnt ← ++ (byte) frame_cnt
to:irq::@1
irq::@1: scope:[irq] from irq irq::@2
[227] *((const byte*) BGCOL) ← (const byte) BLACK
[228] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER
[228] *((const byte*) BGCOL) ← (const byte) BLACK
[229] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER
to:irq::@return
irq::@return: scope:[irq] from irq::@1
[229] return
[230] return
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -4,31 +4,31 @@
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte*) BITMAP = (byte*) 8192
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) CIA1_INTERRUPT = (byte*) 56333
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const byte*) D011 = (byte*) 53265
(const byte*) D018 = (byte*) 53272
(const void()**) HARDWARE_IRQ = (void()**) 65534
(const byte*) IRQ_ENABLE = (byte*) 53274
(const byte) IRQ_RASTER = (number) 1
(const byte) IRQ_RASTER = (byte) 1
(const byte*) IRQ_STATUS = (byte*) 53273
(const dword) PI2_u4f28 = (number) $6487ed51
(const dword) PI_HALF_u4f28 = (number) $1921fb54
(const dword) PI_u4f28 = (number) $3243f6a9
(const dword) PI2_u4f28 = (dword) $6487ed51
(const dword) PI_HALF_u4f28 = (dword) $1921fb54
(const dword) PI_u4f28 = (dword) $3243f6a9
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(label) bitmap_clear::@1
(label) bitmap_clear::@return
@ -41,7 +41,7 @@
(byte~) bitmap_init::$4 reg byte a 22.0
(byte~) bitmap_init::$5 reg byte a 22.0
(byte~) bitmap_init::$6 reg byte a 22.0
(byte~) bitmap_init::$7 zp[1]:23 5.5
(byte~) bitmap_init::$7 zp[1]:21 5.5
(label) bitmap_init::@1
(label) bitmap_init::@2
(label) bitmap_init::@3
@ -62,18 +62,18 @@
(byte) bitmap_init::y#1 reg byte x 16.5
(byte) bitmap_init::y#2 reg byte x 5.5
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:36 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:36 6.875
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:36 11.0
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:17 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:17 6.875
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:17 11.0
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 zp[2]:21 4.0
(word~) bitmap_plot::$1 zp[2]:19 4.0
(byte~) bitmap_plot::$2 reg byte a 4.0
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(word) bitmap_plot::plotter#0 plotter zp[2]:19 1.0
(byte*) bitmap_plot::plotter#1 plotter zp[2]:19 3.0
(word) bitmap_plot::plotter#0 plotter zp[2]:17 1.0
(byte*) bitmap_plot::plotter#1 plotter zp[2]:17 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 x zp[2]:28 3.75
(word) bitmap_plot::x#0 x zp[2]:15 3.75
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 7.5
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
@ -88,12 +88,12 @@
(word) div32u16u::divisor
(dword) div32u16u::quotient
(word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:36 0.8
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:34 0.8
(word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:16 4.0
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:12 4.0
(dword) div32u16u::return
(dword) div32u16u::return#0 return zp[4]:24 1.3333333333333333
(dword) div32u16u::return#2 return zp[4]:24 4.0
(dword) div32u16u::return#0 return zp[4]:22 1.3333333333333333
(dword) div32u16u::return#2 return zp[4]:22 4.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 22.0
(byte~) divr16u::$2 reg byte a 22.0
@ -105,31 +105,31 @@
(label) divr16u::@6
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp[2]:14 2.75
(word) divr16u::dividend#3 dividend zp[2]:14 5.0
(word) divr16u::dividend#5 dividend zp[2]:14 2.0
(word) divr16u::dividend#0 dividend zp[2]:26 2.75
(word) divr16u::dividend#3 dividend zp[2]:26 5.0
(word) divr16u::dividend#5 dividend zp[2]:26 2.0
(word) divr16u::divisor
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp[2]:16 16.5
(word) divr16u::quotient#2 quotient zp[2]:16 11.0
(word) divr16u::quotient#3 quotient zp[2]:16 2.75
(word) divr16u::quotient#1 quotient zp[2]:12 16.5
(word) divr16u::quotient#2 quotient zp[2]:12 11.0
(word) divr16u::quotient#3 quotient zp[2]:12 2.75
(word) divr16u::rem
(word) divr16u::rem#0 rem zp[2]:12 8.25
(word) divr16u::rem#1 rem zp[2]:12 22.0
(word) divr16u::rem#10 rem zp[2]:12 4.0
(word) divr16u::rem#11 rem zp[2]:12 11.666666666666666
(word) divr16u::rem#2 rem zp[2]:12 22.0
(word) divr16u::rem#4 rem zp[2]:12 4.0
(word) divr16u::rem#5 rem zp[2]:12 24.0
(word) divr16u::rem#6 rem zp[2]:12 11.0
(word) divr16u::rem#0 rem zp[2]:19 8.25
(word) divr16u::rem#1 rem zp[2]:19 22.0
(word) divr16u::rem#10 rem zp[2]:19 4.0
(word) divr16u::rem#11 rem zp[2]:19 11.666666666666666
(word) divr16u::rem#2 rem zp[2]:19 22.0
(word) divr16u::rem#4 rem zp[2]:19 4.0
(word) divr16u::rem#5 rem zp[2]:19 24.0
(word) divr16u::rem#6 rem zp[2]:19 11.0
(word) divr16u::return
(word) divr16u::return#0 return zp[2]:16 5.285714285714286
(word) divr16u::return#2 return zp[2]:16 4.0
(word) divr16u::return#3 return zp[2]:16 4.0
(byte) frame_cnt loadstore zp[1]:18 0.6521739130434783
(word) divr16u::return#0 return zp[2]:12 5.285714285714286
(word) divr16u::return#2 return zp[2]:12 4.0
(word) divr16u::return#3 return zp[2]:12 4.0
(byte) frame_cnt loadstore zp[1]:14 0.6521739130434783
(void()) init_irq()
(label) init_irq::@return
interrupt(HARDWARE_CLOBBER)(void()) irq()
@ -137,13 +137,13 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(label) irq::@2
(label) irq::@return
(void()) main()
(signed dword~) main::$11 zp[4]:8 22.0
(signed dword~) main::$11 zp[4]:6 22.0
(word~) main::$12 reg byte alu 22.0
(word~) main::$22 zp[2]:36 22.0
(word~) main::$23 zp[2]:36 22.0
(signed word*~) main::$24 zp[2]:36 22.0
(signed word*~) main::$25 zp[2]:36 22.0
(signed dword~) main::$6 zp[4]:8 22.0
(word~) main::$22 zp[2]:10 22.0
(word~) main::$23 zp[2]:10 22.0
(signed word*~) main::$24 zp[2]:10 22.0
(signed word*~) main::$25 zp[2]:10 22.0
(signed dword~) main::$6 zp[4]:6 22.0
(word~) main::$7 reg byte alu 22.0
(label) main::@1
(label) main::@10
@ -159,30 +159,30 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(label) main::@8
(label) main::@9
(signed word) main::cos_x
(signed word) main::cos_x#0 cos_x zp[2]:36 22.0
(signed word) main::cos_x#0 cos_x zp[2]:10 22.0
(word) main::idx_x
(word) main::idx_x#1 idx_x zp[2]:2 11.0
(word) main::idx_x#10 idx_x zp[2]:2 3.6666666666666665
(word) main::idx_x#3 idx_x zp[2]:2 1.375
(word) main::idx_x#1 idx_x zp[2]:12 11.0
(word) main::idx_x#10 idx_x zp[2]:12 3.6666666666666665
(word) main::idx_x#3 idx_x zp[2]:12 1.375
(word) main::idx_y
(word) main::idx_y#1 idx_y zp[2]:14 11.0
(word) main::idx_y#10 idx_y zp[2]:14 11.0
(word) main::idx_y#3 idx_y zp[2]:14 1.1785714285714286
(word) main::idx_y#1 idx_y zp[2]:32 11.0
(word) main::idx_y#10 idx_y zp[2]:32 11.0
(word) main::idx_y#3 idx_y zp[2]:32 1.1785714285714286
(signed word) main::sin_y
(signed word) main::sin_y#0 sin_y zp[2]:36 22.0
(signed word) main::sin_y#0 sin_y zp[2]:10 22.0
(label) main::toD0181
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
(byte*) main::toD0181_screen
(word) main::x
(word) main::x#0 x zp[2]:28 1.8333333333333333
(word) main::x#0 x zp[2]:15 1.8333333333333333
(signed dword) main::xpos
(signed dword) main::xpos#0 xpos zp[4]:8 22.0
(signed dword) main::xpos#0 xpos zp[4]:6 22.0
(word) main::y
(word) main::y#0 y zp[2]:19 11.0
(word) main::y#0 y zp[2]:17 11.0
(signed dword) main::ypos
(signed dword) main::ypos#0 ypos zp[4]:8 22.0
(signed dword) main::ypos#0 ypos zp[4]:6 22.0
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@ -191,21 +191,21 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(byte) memset::c
(byte) memset::c#4 reg byte x 1.375
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:19 22.0
(byte*) memset::dst#2 dst zp[2]:19 15.333333333333332
(byte*) memset::dst#4 dst zp[2]:19 4.0
(byte*) memset::dst#1 dst zp[2]:32 22.0
(byte*) memset::dst#2 dst zp[2]:32 15.333333333333332
(byte*) memset::dst#4 dst zp[2]:32 4.0
(byte*) memset::end
(byte*) memset::end#0 end zp[2]:14 2.1666666666666665
(byte*) memset::end#0 end zp[2]:12 2.1666666666666665
(word) memset::num
(word) memset::num#2 num zp[2]:14 2.0
(word) memset::num#2 num zp[2]:12 2.0
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:19
(void*) memset::str#3 str zp[2]:32
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
(word~) mul16s::$13 zp[2]:34 4.0
(word~) mul16s::$16 zp[2]:21 4.0
(word~) mul16s::$17 zp[2]:19 4.0
(word~) mul16s::$9 zp[2]:21 4.0
(word~) mul16s::$13 zp[2]:26 4.0
(word~) mul16s::$16 zp[2]:19 4.0
(word~) mul16s::$17 zp[2]:17 4.0
(word~) mul16s::$9 zp[2]:19 4.0
(label) mul16s::@1
(label) mul16s::@2
(label) mul16s::@3
@ -213,23 +213,23 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(label) mul16s::@5
(label) mul16s::@return
(signed word) mul16s::a
(signed word) mul16s::a#0 a zp[2]:19 22.0
(signed word) mul16s::a#3 a zp[2]:19 1.0
(signed word) mul16s::a#0 a zp[2]:17 22.0
(signed word) mul16s::a#3 a zp[2]:17 1.0
(signed word) mul16s::b
(signed word) mul16s::b#1 b zp[2]:36 22.0
(signed word) mul16s::b#2 b zp[2]:36 22.0
(signed word) mul16s::b#3 b zp[2]:36 2.1818181818181817
(signed word) mul16s::b#1 b zp[2]:10 22.0
(signed word) mul16s::b#2 b zp[2]:10 22.0
(signed word) mul16s::b#3 b zp[2]:10 2.1818181818181817
(dword) mul16s::m
(dword) mul16s::m#0 m zp[4]:8 2.0
(dword) mul16s::m#1 m zp[4]:8 4.0
(dword) mul16s::m#2 m zp[4]:8 4.0
(dword) mul16s::m#4 m zp[4]:8 4.0
(dword) mul16s::m#5 m zp[4]:8 2.5
(dword) mul16s::m#0 m zp[4]:6 2.0
(dword) mul16s::m#1 m zp[4]:6 4.0
(dword) mul16s::m#2 m zp[4]:6 4.0
(dword) mul16s::m#4 m zp[4]:6 4.0
(dword) mul16s::m#5 m zp[4]:6 2.5
(signed dword) mul16s::return
(signed dword) mul16s::return#0 return zp[4]:8 7.000000000000001
(signed dword) mul16s::return#2 return zp[4]:8 22.0
(signed dword) mul16s::return#3 return zp[4]:8 22.0
(signed dword) mul16s::return#4 return zp[4]:8 22.0
(signed dword) mul16s::return#0 return zp[4]:6 7.000000000000001
(signed dword) mul16s::return#2 return zp[4]:6 22.0
(signed dword) mul16s::return#3 return zp[4]:6 22.0
(signed dword) mul16s::return#4 return zp[4]:6 22.0
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 202.0
(label) mul16u::@1
@ -238,57 +238,58 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(label) mul16u::@4
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp[2]:12 101.0
(word) mul16u::a#1 a zp[2]:12 2.0
(word) mul16u::a#2 a zp[2]:12 2.0
(word) mul16u::a#3 a zp[2]:12 67.66666666666666
(word) mul16u::a#6 a zp[2]:12 6.0
(word) mul16u::a#0 a zp[2]:26 101.0
(word) mul16u::a#1 a zp[2]:26 2.0
(word) mul16u::a#2 a zp[2]:26 2.0
(word) mul16u::a#3 a zp[2]:26 67.66666666666666
(word) mul16u::a#6 a zp[2]:26 3.0
(word) mul16u::b
(word) mul16u::b#0 b zp[2]:21 4.0
(word) mul16u::b#1 b_1 zp[2]:2 4.0
(word) mul16u::b#0 b zp[2]:19 4.0
(word) mul16u::b#1 b zp[2]:19 4.0
(word) mul16u::b#2 b zp[2]:19 4.0
(dword) mul16u::mb
(dword) mul16u::mb#0 mb zp[4]:30 6.0
(dword) mul16u::mb#1 mb zp[4]:30 202.0
(dword) mul16u::mb#2 mb zp[4]:30 43.57142857142858
(dword) mul16u::mb#0 mb zp[4]:28 4.0
(dword) mul16u::mb#1 mb zp[4]:28 202.0
(dword) mul16u::mb#2 mb zp[4]:28 43.57142857142858
(dword) mul16u::res
(dword) mul16u::res#1 res zp[4]:8 202.0
(dword) mul16u::res#2 res zp[4]:8 43.85714285714286
(dword) mul16u::res#6 res zp[4]:8 101.0
(dword) mul16u::res#1 res zp[4]:6 202.0
(dword) mul16u::res#2 res zp[4]:6 43.85714285714286
(dword) mul16u::res#6 res zp[4]:6 101.0
(dword) mul16u::return
(dword) mul16u::return#2 return zp[4]:8 4.0
(dword) mul16u::return#3 return zp[4]:8 4.0
(dword) mul16u::return#2 return zp[4]:6 4.0
(dword) mul16u::return#3 return zp[4]:6 4.0
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
(dword~) mulu16_sel::$0 zp[4]:8 4.0
(dword~) mulu16_sel::$1 zp[4]:8 4.0
(dword~) mulu16_sel::$0 zp[4]:6 4.0
(dword~) mulu16_sel::$1 zp[4]:6 4.0
(label) mulu16_sel::@1
(label) mulu16_sel::@return
(word) mulu16_sel::return
(word) mulu16_sel::return#0 return zp[2]:36 4.0
(word) mulu16_sel::return#1 return_1 zp[2]:21 4.0
(word) mulu16_sel::return#10 return_1 zp[2]:21 4.0
(word) mulu16_sel::return#11 return zp[2]:36 4.0
(word) mulu16_sel::return#12 return zp[2]:36 1.714285714285714
(word) mulu16_sel::return#2 return zp[2]:36 4.0
(word) mulu16_sel::return#0 return zp[2]:32 4.0
(word) mulu16_sel::return#1 return_1 zp[2]:10 4.0
(word) mulu16_sel::return#10 return_1 zp[2]:10 4.0
(word) mulu16_sel::return#11 return zp[2]:32 4.0
(word) mulu16_sel::return#12 return zp[2]:32 1.714285714285714
(word) mulu16_sel::return#2 return zp[2]:32 4.0
(byte) mulu16_sel::select
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
(word) mulu16_sel::v1
(word) mulu16_sel::v1#0 v1 zp[2]:21 2.0
(word) mulu16_sel::v1#1 v1 zp[2]:21 2.0
(word) mulu16_sel::v1#2 v1 zp[2]:21 4.0
(word) mulu16_sel::v1#3 v1 zp[2]:21 2.0
(word) mulu16_sel::v1#4 v1 zp[2]:21 2.0
(word) mulu16_sel::v1#5 v1 zp[2]:21 12.0
(word) mulu16_sel::v1#0 v1 zp[2]:10 2.0
(word) mulu16_sel::v1#1 v1 zp[2]:10 2.0
(word) mulu16_sel::v1#2 v1 zp[2]:10 4.0
(word) mulu16_sel::v1#3 v1 zp[2]:10 2.0
(word) mulu16_sel::v1#4 v1 zp[2]:10 2.0
(word) mulu16_sel::v1#5 v1 zp[2]:10 12.0
(word) mulu16_sel::v2
(word) mulu16_sel::v2#0 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#1 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#3 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:2 5.0
(word) mulu16_sel::v2#0 v2 zp[2]:19 4.0
(word) mulu16_sel::v2#1 v2 zp[2]:19 4.0
(word) mulu16_sel::v2#3 v2 zp[2]:19 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:19 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:19 5.0
(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
(word) rem16u
(word) rem16u#1 rem16u zp[2]:12 0.8
(word) rem16u#1 rem16u zp[2]:19 0.8
(signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$4 zp[4]:30 4.0
(dword~) sin16s::$4 zp[4]:28 4.0
(label) sin16s::@1
(label) sin16s::@10
(label) sin16s::@11
@ -305,37 +306,37 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(byte) sin16s::isUpper
(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061
(signed word) sin16s::return
(signed word) sin16s::return#0 return zp[2]:19 22.0
(signed word) sin16s::return#1 return zp[2]:19 5.0
(signed word) sin16s::return#5 return zp[2]:19 4.0
(signed word) sin16s::return#0 return zp[2]:17 22.0
(signed word) sin16s::return#1 return zp[2]:17 5.0
(signed word) sin16s::return#5 return zp[2]:17 4.0
(signed word) sin16s::sinx
(signed word) sin16s::sinx#1 sinx zp[2]:19 4.0
(signed word) sin16s::sinx#1 sinx zp[2]:17 4.0
(word) sin16s::usinx
(word) sin16s::usinx#0 usinx zp[2]:19 0.3333333333333333
(word) sin16s::usinx#1 usinx zp[2]:19 1.0
(word) sin16s::usinx#0 usinx zp[2]:17 0.3333333333333333
(word) sin16s::usinx#1 usinx zp[2]:17 1.0
(dword) sin16s::x
(dword) sin16s::x#0 x zp[4]:8 8.5
(dword) sin16s::x#1 x zp[4]:8 4.0
(dword) sin16s::x#2 x zp[4]:8 4.0
(dword) sin16s::x#4 x zp[4]:8 5.0
(dword) sin16s::x#6 x zp[4]:8 6.0
(dword) sin16s::x#0 x zp[4]:6 8.5
(dword) sin16s::x#1 x zp[4]:6 4.0
(dword) sin16s::x#2 x zp[4]:6 4.0
(dword) sin16s::x#4 x zp[4]:6 5.0
(dword) sin16s::x#6 x zp[4]:6 6.0
(word) sin16s::x1
(word) sin16s::x1#0 x1 zp[2]:34 0.6363636363636365
(word) sin16s::x2
(word) sin16s::x2#0 x2 zp[2]:21 4.0
(word) sin16s::x2#0 x2 zp[2]:10 4.0
(word) sin16s::x3
(word) sin16s::x3#0 x3 zp[2]:21 1.0
(word) sin16s::x3#0 x3 zp[2]:10 1.0
(word) sin16s::x3_6
(word) sin16s::x3_6#0 x3_6 zp[2]:36 4.0
(word) sin16s::x3_6#0 x3_6 zp[2]:32 4.0
(word) sin16s::x4
(word) sin16s::x4#0 x4 zp[2]:21 4.0
(word) sin16s::x4#0 x4 zp[2]:10 4.0
(word) sin16s::x5
(word) sin16s::x5#0 x5 zp[2]:36 4.0
(word) sin16s::x5#0 x5 zp[2]:32 4.0
(word) sin16s::x5_128
(word) sin16s::x5_128#0 x5_128 zp[2]:36 4.0
(word) sin16s::x5_128#0 x5_128 zp[2]:32 4.0
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
(signed dword~) sin16s_gen2::$6 zp[4]:8 22.0
(word~) sin16s_gen2::$9 zp[2]:28 11.0
(signed dword~) sin16s_gen2::$6 zp[4]:6 22.0
(word~) sin16s_gen2::$9 zp[2]:26 11.0
(label) sin16s_gen2::@1
(label) sin16s_gen2::@2
(label) sin16s_gen2::@3
@ -345,53 +346,52 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(signed word) sin16s_gen2::ampl
(const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0
(word) sin16s_gen2::i
(word) sin16s_gen2::i#1 i zp[2]:14 22.0
(word) sin16s_gen2::i#2 i zp[2]:14 2.5384615384615383
(word) sin16s_gen2::i#1 i zp[2]:12 22.0
(word) sin16s_gen2::i#2 i zp[2]:12 2.5384615384615383
(signed word) sin16s_gen2::max
(const signed word) sin16s_gen2::max#0 max = (signed word) $1001
(signed word) sin16s_gen2::min
(const signed word) sin16s_gen2::min#0 min = (signed word) -$1001
(signed word) sin16s_gen2::offs
(signed word*) sin16s_gen2::sintab
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:16 7.333333333333333
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:16 3.0
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:15 7.333333333333333
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:15 3.0
(dword) sin16s_gen2::step
(dword) sin16s_gen2::step#0 step zp[4]:24 0.8666666666666666
(dword) sin16s_gen2::step#0 step zp[4]:22 0.8666666666666666
(word) sin16s_gen2::wavelength
(const word) sin16s_gen2::wavelength#0 wavelength = (word) $200
(dword) sin16s_gen2::x
(dword) sin16s_gen2::x#1 x zp[4]:4 11.0
(dword) sin16s_gen2::x#2 x zp[4]:4 2.75
(dword) sin16s_gen2::x#1 x zp[4]:2 11.0
(dword) sin16s_gen2::x#2 x zp[4]:2 2.75
zp[2]:2 [ mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 main::idx_x#3 main::idx_x#10 main::idx_x#1 ]
reg byte x [ memset::c#4 ]
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
zp[4]:4 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
zp[4]:2 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
reg byte y [ sin16s::isUpper#2 ]
zp[4]:8 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#3 main::xpos#0 mul16s::return#4 main::ypos#0 mul16s::return#2 sin16s_gen2::$6 main::$6 main::$11 mulu16_sel::$0 mulu16_sel::$1 ]
zp[4]:6 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#3 main::xpos#0 mul16s::return#4 main::ypos#0 mul16s::return#2 sin16s_gen2::$6 main::$6 main::$11 mulu16_sel::$0 mulu16_sel::$1 ]
zp[2]:10 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 main::sin_y#0 main::$22 main::$24 main::$23 main::$25 ]
reg byte x [ mulu16_sel::select#5 ]
zp[2]:12 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
zp[2]:14 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 sin16s_gen2::i#2 sin16s_gen2::i#1 memset::num#2 memset::end#0 main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
zp[2]:16 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
zp[2]:12 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 sin16s_gen2::i#2 sin16s_gen2::i#1 memset::num#2 memset::end#0 main::idx_x#3 main::idx_x#10 main::idx_x#1 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
zp[1]:18 [ frame_cnt ]
zp[1]:14 [ frame_cnt ]
reg byte alu [ main::$7 ]
zp[2]:15 [ main::x#0 bitmap_plot::x#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
reg byte alu [ main::$12 ]
reg byte x [ bitmap_plot::y#0 ]
zp[2]:19 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 main::y#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16s::a#3 mul16s::a#0 mul16s::$17 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::usinx#0 ]
zp[2]:17 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 main::y#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mul16s::a#3 mul16s::a#0 mul16s::$17 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::usinx#0 ]
reg byte a [ bitmap_plot::$2 ]
zp[2]:21 [ mul16s::$9 mul16s::$16 bitmap_plot::$1 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 mul16u::b#0 ]
zp[2]:19 [ mul16s::$9 mul16s::$16 bitmap_plot::$1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
reg byte a [ mul16u::$1 ]
zp[1]:23 [ bitmap_init::$7 ]
zp[1]:21 [ bitmap_init::$7 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]
zp[4]:24 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
zp[2]:28 [ sin16s_gen2::$9 main::x#0 bitmap_plot::x#0 ]
zp[4]:30 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
zp[2]:34 [ sin16s::x1#0 mul16s::$13 ]
zp[2]:36 [ div32u16u::quotient_hi#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 main::sin_y#0 main::$22 main::$24 main::$23 main::$25 ]
zp[4]:22 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
zp[2]:26 [ sin16s_gen2::$9 mul16s::$13 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
zp[4]:28 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
zp[2]:32 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
zp[2]:34 [ div32u16u::quotient_hi#0 sin16s::x1#0 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]

View File

@ -44,9 +44,9 @@
.const SIZEOF_SIGNED_WORD = 2
.label BITMAP = $2000
.label SCREEN = $400
.label frame_cnt = $12
.label frame_cnt = $10
// Remainder after unsigned 16-bit division
.label rem16u = $15
.label rem16u = $13
__b1:
// Counts frames - updated by the IRQ
lda #1
@ -55,24 +55,24 @@ __b1:
rts
main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
.label __7 = $1c
.label __8 = $1c
.label __7 = $11
.label __8 = $11
.label __13 = $13
.label __14 = $13
.label __31 = $24
.label __32 = $24
.label cos_x = $24
.label xpos = $a
.label x = $1c
.label sin_y = $24
.label ypos = $a
.label __31 = $c
.label __32 = $c
.label cos_x = $c
.label xpos = 8
.label x = $11
.label sin_y = $c
.label ypos = 8
.label y = $13
.label idx_x = 2
.label idx_y = $e
.label r = 4
.label idx_x = $e
.label idx_y = $20
.label r = 2
.label r_add = $17
.label __33 = $24
.label __34 = $24
.label __33 = $c
.label __34 = $c
jsr sin16s_gen2
jsr bitmap_init
jsr bitmap_clear
@ -248,11 +248,11 @@ main: {
jmp __b7
}
// Plot a single dot in the bitmap
// bitmap_plot(word zp($1c) x, byte register(X) y)
// bitmap_plot(word zp($11) x, byte register(X) y)
bitmap_plot: {
.label __1 = $15
.label plotter = $13
.label x = $1c
.label x = $11
lda bitmap_plot_yhi,x
sta.z plotter+1
lda bitmap_plot_ylo,x
@ -280,16 +280,16 @@ bitmap_plot: {
}
// Multiply of two signed words to a signed double word
// Fixes offsets introduced by using unsigned multiplication
// mul16s(signed word zp(4) a, signed word zp($24) b)
// mul16s(signed word zp(2) a, signed word zp($c) b)
mul16s: {
.label __9 = $15
.label __13 = $22
.label __16 = $15
.label __17 = $22
.label m = $a
.label return = $a
.label a = 4
.label b = $24
.label m = 8
.label return = 8
.label a = 2
.label b = $c
lda.z a
sta.z mul16u.a
lda.z a+1
@ -298,13 +298,6 @@ mul16s: {
sta.z mul16u.b
lda.z b+1
sta.z mul16u.b+1
lda.z mul16u.b
sta.z mul16u.mb
lda.z mul16u.b+1
sta.z mul16u.mb+1
lda #0
sta.z mul16u.mb+2
sta.z mul16u.mb+3
jsr mul16u
lda.z a+1
bpl __b1
@ -347,16 +340,23 @@ mul16s: {
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
// mul16u(word zp($15) a, word zp($13) b)
mul16u: {
.label mb = $1e
.label mb = $1c
.label a = $15
.label res = $a
.label res = 8
.label b = $13
.label return = $a
.label b_1 = 2
.label return = 8
lda.z b
sta.z mb
lda.z b+1
sta.z mb+1
lda #0
sta.z mb+2
sta.z mb+3
sta.z res
sta.z res+1
lda #<0>>$10
sta.z res+2
lda #>0>>$10
sta.z res+3
__b1:
lda.z a
@ -447,12 +447,12 @@ bitmap_clear: {
rts
}
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zp($e) str, byte register(X) c, word zp(4) num)
// memset(void* zp(2) str, byte register(X) c, word zp($e) num)
memset: {
.label end = 4
.label dst = $e
.label num = 4
.label str = $e
.label end = $e
.label dst = 2
.label num = $e
.label str = 2
lda.z num
bne !+
lda.z num+1
@ -487,7 +487,7 @@ memset: {
// Initialize bitmap plotting tables
bitmap_init: {
.label __7 = $17
.label yoffs = $24
.label yoffs = $20
ldx #0
lda #$80
__b1:
@ -532,30 +532,33 @@ bitmap_init: {
// Generate signed word sinus table - with values in the range min-max.
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
// sin16s_gen2(signed word* zp($10) sintab)
// sin16s_gen2(signed word* zp($11) sintab)
sin16s_gen2: {
.label wavelength = $200
.const min = -$1001
.const max = $1001
.const ampl = max-min
.label __6 = $a
.label __9 = $1c
.label __6 = 8
.label __9 = $22
.label step = $18
.label sintab = $10
.label sintab = $11
// u[4.28]
// Iterate over the table
.label x = 6
.label x = 4
.label i = $e
jsr div32u16u
lda #<SINUS
sta.z sintab
lda #>SINUS
sta.z sintab+1
lda #0
lda #<0
sta.z x
sta.z x+1
lda #<0>>$10
sta.z x+2
lda #>0>>$10
sta.z x+3
lda #<0
sta.z i
sta.z i+1
// u[4.28]
@ -623,20 +626,20 @@ sin16s_gen2: {
// Calculate signed word sinus sin(x)
// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28
// result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff
// sin16s(dword zp($a) x)
// sin16s(dword zp(8) x)
sin16s: {
.label __4 = $1e
.label x = $a
.label return = 4
.label __4 = $1c
.label x = 8
.label return = 2
.label x1 = $22
.label x2 = $13
.label x3 = $13
.label x3_6 = $24
.label usinx = 4
.label x4 = $13
.label x5 = $24
.label x5_128 = $24
.label sinx = 4
.label x2 = $c
.label x3 = $c
.label x3_6 = $20
.label usinx = 2
.label x4 = $c
.label x5 = $20
.label x5_128 = $20
.label sinx = 2
lda.z x+3
cmp #>PI_u4f28>>$10
bcc b1
@ -807,25 +810,18 @@ sin16s: {
}
// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result.
// The select parameter indicates how many of the highest bits of the 32-bit result to skip
// mulu16_sel(word zp($13) v1, word zp(2) v2, byte register(X) select)
// mulu16_sel(word zp($c) v1, word zp($13) v2, byte register(X) select)
mulu16_sel: {
.label __0 = $a
.label __1 = $a
.label v1 = $13
.label v2 = 2
.label return = $24
.label return_1 = $13
.label __0 = 8
.label __1 = 8
.label v1 = $c
.label v2 = $13
.label return = $20
.label return_1 = $c
lda.z v1
sta.z mul16u.a
lda.z v1+1
sta.z mul16u.a+1
lda.z mul16u.b_1
sta.z mul16u.mb
lda.z mul16u.b_1+1
sta.z mul16u.mb+1
lda #0
sta.z mul16u.mb+2
sta.z mul16u.mb+3
jsr mul16u
cpx #0
beq !e+
@ -846,8 +842,8 @@ mulu16_sel: {
// Divide unsigned 32-bit dword dividend with a 16-bit word divisor
// The 16-bit word remainder can be found in rem16u after the division
div32u16u: {
.label quotient_hi = $24
.label quotient_lo = $10
.label quotient_hi = $22
.label quotient_lo = $e
.label return = $18
lda #<PI2_u4f28>>$10
sta.z divr16u.dividend
@ -880,12 +876,12 @@ div32u16u: {
// Returns the quotient dividend/divisor.
// The final remainder will be set into the global variable rem16u
// Implemented using simple binary division
// divr16u(word zp($e) dividend, word zp($15) rem)
// divr16u(word zp($15) dividend, word zp($13) rem)
divr16u: {
.label rem = $15
.label dividend = $e
.label quotient = $10
.label return = $10
.label rem = $13
.label dividend = $15
.label quotient = $e
.label return = $e
ldx #0
txa
sta.z quotient

View File

@ -36,9 +36,9 @@ main::@8: scope:[main] from main::toD0181
to:main::@1
main::@1: scope:[main] from main::@5 main::@8
[15] (byte) main::r_add#10 ← phi( main::@8/(byte) $20 main::@5/(byte) main::r_add#12 )
[15] (word) main::idx_y#3 ← phi( main::@8/(byte) $80 main::@5/(word) main::idx_y#10 )
[15] (signed word) main::r#10 ← phi( main::@8/(signed byte) 0 main::@5/(signed word) main::r#1 )
[15] (word) main::idx_x#11 ← phi( main::@8/(byte) 0 main::@5/(word) main::idx_x#10 )
[15] (word) main::idx_y#3 ← phi( main::@8/(word) $80 main::@5/(word) main::idx_y#10 )
[15] (signed word) main::r#10 ← phi( main::@8/(signed word) 0 main::@5/(signed word) main::r#1 )
[15] (word) main::idx_x#11 ← phi( main::@8/(word) 0 main::@5/(word) main::idx_x#10 )
to:main::@2
main::@2: scope:[main] from main::@1
[16] (word~) main::$31 ← (word) main::idx_x#11 << (byte) 1
@ -156,324 +156,325 @@ mul16s::@return: scope:[mul16s] from mul16s::@2
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
mul16u: scope:[mul16u] from mul16s mulu16_sel
[81] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 )
[81] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 )
[81] (word) mul16u::b#2 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 )
[82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
[82] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
[82] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
[82] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
[83] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
[83] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
[83] (dword) mul16u::res#2 ← phi( mul16u/(dword) 0 mul16u::@3/(dword) mul16u::res#6 )
[83] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
[84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
[84] return
[85] return
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
[85] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
[86] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
[86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
[87] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2
[87] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
[88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
to:mul16u::@3
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
[88] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[89] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
[90] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
[89] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[90] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
[91] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
to:mul16u::@1
(void()) init_irq()
init_irq: scope:[init_irq] from main::@8
asm { sei }
[92] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK
[93] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO
[94] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR
[95] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80
[96] *((const byte*) RASTER) ← (byte) 0
[97] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER
[98] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
[93] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK
[94] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO
[95] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR
[96] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80
[97] *((const byte*) RASTER) ← (byte) 0
[98] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER
[99] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
asm { cli }
to:init_irq::@return
init_irq::@return: scope:[init_irq] from init_irq
[100] return
[101] return
to:@return
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
bitmap_clear: scope:[bitmap_clear] from main::@10
[101] phi()
[102] call memset
[102] phi()
[103] call memset
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
[103] phi()
[104] call memset
[104] phi()
[105] call memset
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
[105] return
[106] return
to:@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
[106] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
[106] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP )
[106] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
[107] if((word) memset::num#2<=(byte) 0) goto memset::@return
[107] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
[107] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP )
[107] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
[108] if((word) memset::num#2<=(byte) 0) goto memset::@return
to:memset::@1
memset::@1: scope:[memset] from memset
[108] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
[109] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
[109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
[110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[110] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
[111] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
[111] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
[112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset memset::@2
[112] return
[113] return
to:@return
memset::@3: scope:[memset] from memset::@2
[113] *((byte*) memset::dst#2) ← (byte) memset::c#4
[114] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
[114] *((byte*) memset::dst#2) ← (byte) memset::c#4
[115] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
to:memset::@2
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
bitmap_init: scope:[bitmap_init] from main::@9
[115] phi()
[116] phi()
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[116] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
[116] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
[117] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
[118] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
[119] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
[117] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
[117] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
[118] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
[119] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
[120] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
[120] phi()
[121] phi()
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
[121] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
[122] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
[123] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
[122] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
[123] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
[124] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[124] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
[124] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
[125] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
[126] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
[127] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
[128] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
[129] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
[130] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
[131] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
[125] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
[125] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
[126] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
[127] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
[128] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
[129] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
[130] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
[131] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
[132] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
[132] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
[133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
[133] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
[134] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
[135] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
[134] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
[135] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
[136] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[136] return
[137] return
to:@return
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
sin16s_gen2: scope:[sin16s_gen2] from main
[137] phi()
[138] call div32u16u
[139] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
[138] phi()
[139] call div32u16u
[140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
to:sin16s_gen2::@3
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2
[140] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
[141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@3 sin16s_gen2::@5
[141] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@3/(const signed word*) SINUS sin16s_gen2::@5/(signed word*) sin16s_gen2::sintab#0 )
[141] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@3/(byte) 0 sin16s_gen2::@5/(dword) sin16s_gen2::x#1 )
[141] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@3/(byte) 0 sin16s_gen2::@5/(word) sin16s_gen2::i#1 )
[142] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2
[142] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@3/(const signed word*) SINUS sin16s_gen2::@5/(signed word*) sin16s_gen2::sintab#0 )
[142] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@3/(dword) 0 sin16s_gen2::@5/(dword) sin16s_gen2::x#1 )
[142] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@3/(word) 0 sin16s_gen2::@5/(word) sin16s_gen2::i#1 )
[143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2
to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@1
[143] return
[144] return
to:@return
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1
[144] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
[145] call sin16s
[146] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
[145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
[146] call sin16s
[147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
to:sin16s_gen2::@4
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@2
[147] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
[148] call mul16s
[149] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
[148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
[149] call mul16s
[150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
to:sin16s_gen2::@5
sin16s_gen2::@5: scope:[sin16s_gen2] from sin16s_gen2::@4
[150] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2
[151] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6
[152] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9
[153] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[154] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
[155] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
[151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2
[152] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6
[153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9
[154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
[156] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
to:sin16s_gen2::@1
(signed word()) sin16s((dword) sin16s::x)
sin16s: scope:[sin16s] from sin16s_gen2::@2
[156] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1
[157] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1
to:sin16s::@4
sin16s::@4: scope:[sin16s] from sin16s
[157] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28
[158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28
to:sin16s::@1
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
[158] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
[158] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[159] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2
[159] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
[159] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[160] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2
to:sin16s::@5
sin16s::@5: scope:[sin16s] from sin16s::@1
[160] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4
[161] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4
to:sin16s::@2
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
[161] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[162] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
[163] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
[164] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[165] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[166] call mulu16_sel
[167] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
[162] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
[164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
[165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[166] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[167] call mulu16_sel
[168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
to:sin16s::@7
sin16s::@7: scope:[sin16s] from sin16s::@2
[168] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[169] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[170] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[171] call mulu16_sel
[172] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
[169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[171] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[172] call mulu16_sel
[173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
to:sin16s::@8
sin16s::@8: scope:[sin16s] from sin16s::@7
[173] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[174] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[175] call mulu16_sel
[176] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
[174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[175] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[176] call mulu16_sel
[177] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
to:sin16s::@9
sin16s::@9: scope:[sin16s] from sin16s::@8
[177] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
[178] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[179] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[180] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[181] call mulu16_sel
[182] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
[178] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
[179] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[180] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[181] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[182] call mulu16_sel
[183] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
to:sin16s::@10
sin16s::@10: scope:[sin16s] from sin16s::@9
[183] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
[184] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[185] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[186] call mulu16_sel
[187] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
[184] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
[185] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[186] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[187] call mulu16_sel
[188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
to:sin16s::@11
sin16s::@11: scope:[sin16s] from sin16s::@10
[188] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
[189] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
[190] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[191] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
[189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
[190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
[191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[192] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
to:sin16s::@6
sin16s::@6: scope:[sin16s] from sin16s::@11
[192] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
[193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
to:sin16s::@3
sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6
[193] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
[194] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
to:sin16s::@return
sin16s::@return: scope:[sin16s] from sin16s::@3
[194] return
[195] return
to:@return
sin16s::@12: scope:[sin16s] from sin16s::@11
[195] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
[196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
to:sin16s::@3
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
[196] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
[196] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
[196] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
[197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
[198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
[199] call mul16u
[200] (dword) mul16u::return#3 ← (dword) mul16u::res#2
[197] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
[197] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
[197] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
[198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
[199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
[200] call mul16u
[201] (dword) mul16u::return#3 ← (dword) mul16u::res#2
to:mulu16_sel::@1
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
[201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
[202] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
[203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
[202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
[203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
[204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
[204] return
[205] return
to:@return
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
div32u16u: scope:[div32u16u] from sin16s_gen2
[205] phi()
[206] call divr16u
[207] (word) divr16u::return#2 ← (word) divr16u::return#0
[206] phi()
[207] call divr16u
[208] (word) divr16u::return#2 ← (word) divr16u::return#0
to:div32u16u::@1
div32u16u::@1: scope:[div32u16u] from div32u16u
[208] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[209] (word) divr16u::rem#4 ← (word) rem16u#1
[210] call divr16u
[211] (word) divr16u::return#3 ← (word) divr16u::return#0
[209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[210] (word) divr16u::rem#4 ← (word) rem16u#1
[211] call divr16u
[212] (word) divr16u::return#3 ← (word) divr16u::return#0
to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
[212] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[213] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
[213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@2
[214] return
[215] return
to:@return
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
[215] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28 div32u16u::@1/<(const dword) PI2_u4f28 )
[215] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
[216] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28 div32u16u::@1/<(const dword) PI2_u4f28 )
[216] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[216] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[216] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[216] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[216] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[217] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[218] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[219] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[220] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
[217] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[217] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 )
[217] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[217] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[218] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[219] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[220] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[221] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[221] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
[222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[222] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[223] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[224] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[225] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
[223] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[224] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[225] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[226] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[227] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0
[227] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[228] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[228] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[229] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[230] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
[229] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[229] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[230] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[231] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3
[231] (word) rem16u#1 ← (word) divr16u::rem#11
[232] (word) rem16u#1 ← (word) divr16u::rem#11
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
[232] return
[233] return
to:@return
interrupt(HARDWARE_CLOBBER)(void()) irq()
irq: scope:[irq] from
[233] *((const byte*) BGCOL) ← (const byte) WHITE
[234] if((byte) 0==(byte) frame_cnt) goto irq::@1
[234] *((const byte*) BGCOL) ← (const byte) WHITE
[235] if((byte) 0==(byte) frame_cnt) goto irq::@1
to:irq::@2
irq::@2: scope:[irq] from irq
[235] (byte) frame_cnt ← ++ (byte) frame_cnt
[236] (byte) frame_cnt ← ++ (byte) frame_cnt
to:irq::@1
irq::@1: scope:[irq] from irq irq::@2
[236] *((const byte*) BGCOL) ← (const byte) BLACK
[237] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER
[237] *((const byte*) BGCOL) ← (const byte) BLACK
[238] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER
to:irq::@return
irq::@return: scope:[irq] from irq::@1
[238] return
[239] return
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -4,32 +4,32 @@
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte*) BITMAP = (byte*) 8192
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CIA1_INTERRUPT = (byte*) 56333
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const byte*) D011 = (byte*) 53265
(const byte*) D018 = (byte*) 53272
(const void()**) HARDWARE_IRQ = (void()**) 65534
(const byte*) IRQ_ENABLE = (byte*) 53274
(const byte) IRQ_RASTER = (number) 1
(const byte) IRQ_RASTER = (byte) 1
(const byte*) IRQ_STATUS = (byte*) 53273
(const dword) PI2_u4f28 = (number) $6487ed51
(const dword) PI_HALF_u4f28 = (number) $1921fb54
(const dword) PI_u4f28 = (number) $3243f6a9
(const dword) PI2_u4f28 = (dword) $6487ed51
(const dword) PI_HALF_u4f28 = (dword) $1921fb54
(const dword) PI_u4f28 = (dword) $3243f6a9
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(label) bitmap_clear::@1
(label) bitmap_clear::@return
@ -63,9 +63,9 @@
(byte) bitmap_init::y#1 reg byte x 16.5
(byte) bitmap_init::y#2 reg byte x 5.5
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:36 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:36 6.875
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:36 11.0
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:32 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:32 6.875
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:32 11.0
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 zp[2]:21 4.0
(byte~) bitmap_plot::$2 reg byte a 4.0
@ -74,7 +74,7 @@
(word) bitmap_plot::plotter#0 plotter zp[2]:19 1.0
(byte*) bitmap_plot::plotter#1 plotter zp[2]:19 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 x zp[2]:28 3.75
(word) bitmap_plot::x#0 x zp[2]:17 3.75
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 7.5
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
@ -89,9 +89,9 @@
(word) div32u16u::divisor
(dword) div32u16u::quotient
(word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:36 0.8
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:34 0.8
(word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:16 4.0
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:14 4.0
(dword) div32u16u::return
(dword) div32u16u::return#0 return zp[4]:24 1.3333333333333333
(dword) div32u16u::return#2 return zp[4]:24 4.0
@ -106,31 +106,31 @@
(label) divr16u::@6
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp[2]:14 2.75
(word) divr16u::dividend#3 dividend zp[2]:14 5.0
(word) divr16u::dividend#5 dividend zp[2]:14 2.0
(word) divr16u::dividend#0 dividend zp[2]:21 2.75
(word) divr16u::dividend#3 dividend zp[2]:21 5.0
(word) divr16u::dividend#5 dividend zp[2]:21 2.0
(word) divr16u::divisor
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp[2]:16 16.5
(word) divr16u::quotient#2 quotient zp[2]:16 11.0
(word) divr16u::quotient#3 quotient zp[2]:16 2.75
(word) divr16u::quotient#1 quotient zp[2]:14 16.5
(word) divr16u::quotient#2 quotient zp[2]:14 11.0
(word) divr16u::quotient#3 quotient zp[2]:14 2.75
(word) divr16u::rem
(word) divr16u::rem#0 rem zp[2]:21 8.25
(word) divr16u::rem#1 rem zp[2]:21 22.0
(word) divr16u::rem#10 rem zp[2]:21 4.0
(word) divr16u::rem#11 rem zp[2]:21 11.666666666666666
(word) divr16u::rem#2 rem zp[2]:21 22.0
(word) divr16u::rem#4 rem zp[2]:21 4.0
(word) divr16u::rem#5 rem zp[2]:21 24.0
(word) divr16u::rem#6 rem zp[2]:21 11.0
(word) divr16u::rem#0 rem zp[2]:19 8.25
(word) divr16u::rem#1 rem zp[2]:19 22.0
(word) divr16u::rem#10 rem zp[2]:19 4.0
(word) divr16u::rem#11 rem zp[2]:19 11.666666666666666
(word) divr16u::rem#2 rem zp[2]:19 22.0
(word) divr16u::rem#4 rem zp[2]:19 4.0
(word) divr16u::rem#5 rem zp[2]:19 24.0
(word) divr16u::rem#6 rem zp[2]:19 11.0
(word) divr16u::return
(word) divr16u::return#0 return zp[2]:16 5.285714285714286
(word) divr16u::return#2 return zp[2]:16 4.0
(word) divr16u::return#3 return zp[2]:16 4.0
(byte) frame_cnt loadstore zp[1]:18 0.5555555555555556
(word) divr16u::return#0 return zp[2]:14 5.285714285714286
(word) divr16u::return#2 return zp[2]:14 4.0
(word) divr16u::return#3 return zp[2]:14 4.0
(byte) frame_cnt loadstore zp[1]:16 0.5555555555555556
(void()) init_irq()
(label) init_irq::@return
interrupt(HARDWARE_CLOBBER)(void()) irq()
@ -140,12 +140,12 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(void()) main()
(word~) main::$13 zp[2]:19 11.0
(signed word~) main::$14 zp[2]:19 22.0
(word~) main::$31 zp[2]:36 22.0
(word~) main::$32 zp[2]:36 22.0
(signed word*~) main::$33 zp[2]:36 22.0
(signed word*~) main::$34 zp[2]:36 22.0
(word~) main::$7 zp[2]:28 11.0
(signed word~) main::$8 zp[2]:28 22.0
(word~) main::$31 zp[2]:12 22.0
(word~) main::$32 zp[2]:12 22.0
(signed word*~) main::$33 zp[2]:12 22.0
(signed word*~) main::$34 zp[2]:12 22.0
(word~) main::$7 zp[2]:17 11.0
(signed word~) main::$8 zp[2]:17 22.0
(label) main::@1
(label) main::@10
(label) main::@11
@ -164,37 +164,37 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(label) main::@8
(label) main::@9
(signed word) main::cos_x
(signed word) main::cos_x#0 cos_x zp[2]:36 11.0
(signed word) main::cos_x#0 cos_x zp[2]:12 11.0
(word) main::idx_x
(word) main::idx_x#1 idx_x zp[2]:2 11.0
(word) main::idx_x#10 idx_x zp[2]:2 3.0
(word) main::idx_x#11 idx_x zp[2]:2 1.222222222222222
(word) main::idx_x#1 idx_x zp[2]:14 11.0
(word) main::idx_x#10 idx_x zp[2]:14 3.0
(word) main::idx_x#11 idx_x zp[2]:14 1.222222222222222
(word) main::idx_y
(word) main::idx_y#1 idx_y zp[2]:14 11.0
(word) main::idx_y#10 idx_y zp[2]:14 3.142857142857143
(word) main::idx_y#3 idx_y zp[2]:14 1.064516129032258
(word) main::idx_y#1 idx_y zp[2]:32 11.0
(word) main::idx_y#10 idx_y zp[2]:32 3.142857142857143
(word) main::idx_y#3 idx_y zp[2]:32 1.064516129032258
(signed word) main::r
(signed word) main::r#1 r zp[2]:4 5.5
(signed word) main::r#10 r zp[2]:4 1.2571428571428571
(signed word) main::r#1 r zp[2]:2 5.5
(signed word) main::r#10 r zp[2]:2 1.2571428571428571
(byte) main::r_add
(byte) main::r_add#1 r_add zp[1]:23 22.0
(byte) main::r_add#10 r_add zp[1]:23 2.026315789473684
(byte) main::r_add#12 r_add zp[1]:23 16.5
(signed word) main::sin_y
(signed word) main::sin_y#0 sin_y zp[2]:36 11.0
(signed word) main::sin_y#0 sin_y zp[2]:12 11.0
(label) main::toD0181
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
(byte*) main::toD0181_screen
(word) main::x
(signed word) main::x#0 x zp[2]:28 0.8461538461538461
(signed word) main::x#0 x zp[2]:17 0.8461538461538461
(signed dword) main::xpos
(signed dword) main::xpos#0 xpos zp[4]:10 22.0
(signed dword) main::xpos#0 xpos zp[4]:8 22.0
(word) main::y
(signed word) main::y#0 y zp[2]:19 11.0
(signed dword) main::ypos
(signed dword) main::ypos#0 ypos zp[4]:10 22.0
(signed dword) main::ypos#0 ypos zp[4]:8 22.0
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@ -203,16 +203,16 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(byte) memset::c
(byte) memset::c#4 reg byte x 1.375
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:14 22.0
(byte*) memset::dst#2 dst zp[2]:14 15.333333333333332
(byte*) memset::dst#4 dst zp[2]:14 4.0
(byte*) memset::dst#1 dst zp[2]:2 22.0
(byte*) memset::dst#2 dst zp[2]:2 15.333333333333332
(byte*) memset::dst#4 dst zp[2]:2 4.0
(byte*) memset::end
(byte*) memset::end#0 end zp[2]:4 2.1666666666666665
(byte*) memset::end#0 end zp[2]:14 2.1666666666666665
(word) memset::num
(word) memset::num#2 num zp[2]:4 2.0
(word) memset::num#2 num zp[2]:14 2.0
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:14
(void*) memset::str#3 str zp[2]:2
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
(word~) mul16s::$13 zp[2]:34 4.0
(word~) mul16s::$16 zp[2]:21 4.0
@ -225,25 +225,25 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(label) mul16s::@5
(label) mul16s::@return
(signed word) mul16s::a
(signed word) mul16s::a#0 a zp[2]:4 22.0
(signed word) mul16s::a#1 a zp[2]:4 11.0
(signed word) mul16s::a#2 a zp[2]:4 11.0
(signed word) mul16s::a#3 a zp[2]:4 2.692307692307692
(signed word) mul16s::a#0 a zp[2]:2 22.0
(signed word) mul16s::a#1 a zp[2]:2 11.0
(signed word) mul16s::a#2 a zp[2]:2 11.0
(signed word) mul16s::a#3 a zp[2]:2 2.692307692307692
(signed word) mul16s::b
(signed word) mul16s::b#1 b zp[2]:36 22.0
(signed word) mul16s::b#2 b zp[2]:36 22.0
(signed word) mul16s::b#3 b zp[2]:36 2.1818181818181817
(signed word) mul16s::b#1 b zp[2]:12 22.0
(signed word) mul16s::b#2 b zp[2]:12 22.0
(signed word) mul16s::b#3 b zp[2]:12 2.1818181818181817
(dword) mul16s::m
(dword) mul16s::m#0 m zp[4]:10 2.0
(dword) mul16s::m#1 m zp[4]:10 4.0
(dword) mul16s::m#2 m zp[4]:10 4.0
(dword) mul16s::m#4 m zp[4]:10 4.0
(dword) mul16s::m#5 m zp[4]:10 2.5
(dword) mul16s::m#0 m zp[4]:8 2.0
(dword) mul16s::m#1 m zp[4]:8 4.0
(dword) mul16s::m#2 m zp[4]:8 4.0
(dword) mul16s::m#4 m zp[4]:8 4.0
(dword) mul16s::m#5 m zp[4]:8 2.5
(signed dword) mul16s::return
(signed dword) mul16s::return#0 return zp[4]:10 7.000000000000001
(signed dword) mul16s::return#2 return zp[4]:10 22.0
(signed dword) mul16s::return#3 return zp[4]:10 22.0
(signed dword) mul16s::return#4 return zp[4]:10 22.0
(signed dword) mul16s::return#0 return zp[4]:8 7.000000000000001
(signed dword) mul16s::return#2 return zp[4]:8 22.0
(signed dword) mul16s::return#3 return zp[4]:8 22.0
(signed dword) mul16s::return#4 return zp[4]:8 22.0
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 202.0
(label) mul16u::@1
@ -256,53 +256,54 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(word) mul16u::a#1 a zp[2]:21 2.0
(word) mul16u::a#2 a zp[2]:21 2.0
(word) mul16u::a#3 a zp[2]:21 67.66666666666666
(word) mul16u::a#6 a zp[2]:21 6.0
(word) mul16u::a#6 a zp[2]:21 3.0
(word) mul16u::b
(word) mul16u::b#0 b zp[2]:19 4.0
(word) mul16u::b#1 b_1 zp[2]:2 4.0
(word) mul16u::b#1 b zp[2]:19 4.0
(word) mul16u::b#2 b zp[2]:19 4.0
(dword) mul16u::mb
(dword) mul16u::mb#0 mb zp[4]:30 6.0
(dword) mul16u::mb#1 mb zp[4]:30 202.0
(dword) mul16u::mb#2 mb zp[4]:30 43.57142857142858
(dword) mul16u::mb#0 mb zp[4]:28 4.0
(dword) mul16u::mb#1 mb zp[4]:28 202.0
(dword) mul16u::mb#2 mb zp[4]:28 43.57142857142858
(dword) mul16u::res
(dword) mul16u::res#1 res zp[4]:10 202.0
(dword) mul16u::res#2 res zp[4]:10 43.85714285714286
(dword) mul16u::res#6 res zp[4]:10 101.0
(dword) mul16u::res#1 res zp[4]:8 202.0
(dword) mul16u::res#2 res zp[4]:8 43.85714285714286
(dword) mul16u::res#6 res zp[4]:8 101.0
(dword) mul16u::return
(dword) mul16u::return#2 return zp[4]:10 4.0
(dword) mul16u::return#3 return zp[4]:10 4.0
(dword) mul16u::return#2 return zp[4]:8 4.0
(dword) mul16u::return#3 return zp[4]:8 4.0
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
(dword~) mulu16_sel::$0 zp[4]:10 4.0
(dword~) mulu16_sel::$1 zp[4]:10 4.0
(dword~) mulu16_sel::$0 zp[4]:8 4.0
(dword~) mulu16_sel::$1 zp[4]:8 4.0
(label) mulu16_sel::@1
(label) mulu16_sel::@return
(word) mulu16_sel::return
(word) mulu16_sel::return#0 return zp[2]:36 4.0
(word) mulu16_sel::return#1 return_1 zp[2]:19 4.0
(word) mulu16_sel::return#10 return_1 zp[2]:19 4.0
(word) mulu16_sel::return#11 return zp[2]:36 4.0
(word) mulu16_sel::return#12 return zp[2]:36 1.714285714285714
(word) mulu16_sel::return#2 return zp[2]:36 4.0
(word) mulu16_sel::return#0 return zp[2]:32 4.0
(word) mulu16_sel::return#1 return_1 zp[2]:12 4.0
(word) mulu16_sel::return#10 return_1 zp[2]:12 4.0
(word) mulu16_sel::return#11 return zp[2]:32 4.0
(word) mulu16_sel::return#12 return zp[2]:32 1.714285714285714
(word) mulu16_sel::return#2 return zp[2]:32 4.0
(byte) mulu16_sel::select
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
(word) mulu16_sel::v1
(word) mulu16_sel::v1#0 v1 zp[2]:19 2.0
(word) mulu16_sel::v1#1 v1 zp[2]:19 2.0
(word) mulu16_sel::v1#2 v1 zp[2]:19 4.0
(word) mulu16_sel::v1#3 v1 zp[2]:19 2.0
(word) mulu16_sel::v1#4 v1 zp[2]:19 2.0
(word) mulu16_sel::v1#5 v1 zp[2]:19 12.0
(word) mulu16_sel::v1#0 v1 zp[2]:12 2.0
(word) mulu16_sel::v1#1 v1 zp[2]:12 2.0
(word) mulu16_sel::v1#2 v1 zp[2]:12 4.0
(word) mulu16_sel::v1#3 v1 zp[2]:12 2.0
(word) mulu16_sel::v1#4 v1 zp[2]:12 2.0
(word) mulu16_sel::v1#5 v1 zp[2]:12 12.0
(word) mulu16_sel::v2
(word) mulu16_sel::v2#0 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#1 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#3 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:2 5.0
(word) mulu16_sel::v2#0 v2 zp[2]:19 4.0
(word) mulu16_sel::v2#1 v2 zp[2]:19 4.0
(word) mulu16_sel::v2#3 v2 zp[2]:19 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:19 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:19 5.0
(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
(word) rem16u
(word) rem16u#1 rem16u zp[2]:21 0.8
(word) rem16u#1 rem16u zp[2]:19 0.8
(signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$4 zp[4]:30 4.0
(dword~) sin16s::$4 zp[4]:28 4.0
(label) sin16s::@1
(label) sin16s::@10
(label) sin16s::@11
@ -319,37 +320,37 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(byte) sin16s::isUpper
(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061
(signed word) sin16s::return
(signed word) sin16s::return#0 return zp[2]:4 22.0
(signed word) sin16s::return#1 return zp[2]:4 5.0
(signed word) sin16s::return#5 return zp[2]:4 4.0
(signed word) sin16s::return#0 return zp[2]:2 22.0
(signed word) sin16s::return#1 return zp[2]:2 5.0
(signed word) sin16s::return#5 return zp[2]:2 4.0
(signed word) sin16s::sinx
(signed word) sin16s::sinx#1 sinx zp[2]:4 4.0
(signed word) sin16s::sinx#1 sinx zp[2]:2 4.0
(word) sin16s::usinx
(word) sin16s::usinx#0 usinx zp[2]:4 0.3333333333333333
(word) sin16s::usinx#1 usinx zp[2]:4 1.0
(word) sin16s::usinx#0 usinx zp[2]:2 0.3333333333333333
(word) sin16s::usinx#1 usinx zp[2]:2 1.0
(dword) sin16s::x
(dword) sin16s::x#0 x zp[4]:10 8.5
(dword) sin16s::x#1 x zp[4]:10 4.0
(dword) sin16s::x#2 x zp[4]:10 4.0
(dword) sin16s::x#4 x zp[4]:10 5.0
(dword) sin16s::x#6 x zp[4]:10 6.0
(dword) sin16s::x#0 x zp[4]:8 8.5
(dword) sin16s::x#1 x zp[4]:8 4.0
(dword) sin16s::x#2 x zp[4]:8 4.0
(dword) sin16s::x#4 x zp[4]:8 5.0
(dword) sin16s::x#6 x zp[4]:8 6.0
(word) sin16s::x1
(word) sin16s::x1#0 x1 zp[2]:34 0.6363636363636365
(word) sin16s::x2
(word) sin16s::x2#0 x2 zp[2]:19 4.0
(word) sin16s::x2#0 x2 zp[2]:12 4.0
(word) sin16s::x3
(word) sin16s::x3#0 x3 zp[2]:19 1.0
(word) sin16s::x3#0 x3 zp[2]:12 1.0
(word) sin16s::x3_6
(word) sin16s::x3_6#0 x3_6 zp[2]:36 4.0
(word) sin16s::x3_6#0 x3_6 zp[2]:32 4.0
(word) sin16s::x4
(word) sin16s::x4#0 x4 zp[2]:19 4.0
(word) sin16s::x4#0 x4 zp[2]:12 4.0
(word) sin16s::x5
(word) sin16s::x5#0 x5 zp[2]:36 4.0
(word) sin16s::x5#0 x5 zp[2]:32 4.0
(word) sin16s::x5_128
(word) sin16s::x5_128#0 x5_128 zp[2]:36 4.0
(word) sin16s::x5_128#0 x5_128 zp[2]:32 4.0
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
(signed dword~) sin16s_gen2::$6 zp[4]:10 22.0
(word~) sin16s_gen2::$9 zp[2]:28 11.0
(signed dword~) sin16s_gen2::$6 zp[4]:8 22.0
(word~) sin16s_gen2::$9 zp[2]:34 11.0
(label) sin16s_gen2::@1
(label) sin16s_gen2::@2
(label) sin16s_gen2::@3
@ -367,43 +368,42 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(const signed word) sin16s_gen2::min#0 min = (signed word) -$1001
(signed word) sin16s_gen2::offs
(signed word*) sin16s_gen2::sintab
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:16 7.333333333333333
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:16 3.0
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:17 7.333333333333333
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:17 3.0
(dword) sin16s_gen2::step
(dword) sin16s_gen2::step#0 step zp[4]:24 0.8666666666666666
(word) sin16s_gen2::wavelength
(const word) sin16s_gen2::wavelength#0 wavelength = (word) $200
(dword) sin16s_gen2::x
(dword) sin16s_gen2::x#1 x zp[4]:6 11.0
(dword) sin16s_gen2::x#2 x zp[4]:6 2.75
(dword) sin16s_gen2::x#1 x zp[4]:4 11.0
(dword) sin16s_gen2::x#2 x zp[4]:4 2.75
zp[2]:2 [ mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
zp[2]:4 [ memset::num#2 memset::end#0 main::r#10 main::r#1 mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ]
zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 main::r#10 main::r#1 mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ]
reg byte x [ memset::c#4 ]
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
zp[4]:6 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
zp[4]:4 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
reg byte y [ sin16s::isUpper#2 ]
zp[4]:10 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#3 main::xpos#0 mul16s::return#4 main::ypos#0 mul16s::return#2 sin16s_gen2::$6 mulu16_sel::$0 mulu16_sel::$1 ]
zp[4]:8 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#3 main::xpos#0 mul16s::return#4 main::ypos#0 mul16s::return#2 sin16s_gen2::$6 mulu16_sel::$0 mulu16_sel::$1 ]
zp[2]:12 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 mul16s::b#3 mul16s::b#1 mul16s::b#2 main::cos_x#0 main::sin_y#0 main::$31 main::$33 main::$32 main::$34 ]
reg byte x [ mulu16_sel::select#5 ]
zp[2]:14 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 sin16s_gen2::i#2 sin16s_gen2::i#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
zp[2]:16 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
zp[2]:14 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 sin16s_gen2::i#2 sin16s_gen2::i#1 memset::num#2 memset::end#0 main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
zp[1]:18 [ frame_cnt ]
zp[1]:16 [ frame_cnt ]
zp[2]:17 [ main::$7 main::$8 main::x#0 bitmap_plot::x#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
reg byte x [ bitmap_plot::y#0 ]
zp[2]:19 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 main::$13 main::$14 main::y#0 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 mul16u::b#0 ]
zp[2]:19 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 main::$13 main::$14 main::y#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
reg byte a [ bitmap_plot::$2 ]
zp[2]:21 [ mul16s::$9 mul16s::$16 bitmap_plot::$1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
zp[2]:21 [ mul16s::$9 mul16s::$16 bitmap_plot::$1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
reg byte a [ mul16u::$1 ]
zp[1]:23 [ bitmap_init::$7 main::r_add#10 main::r_add#12 main::r_add#1 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]
zp[4]:24 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
zp[2]:28 [ sin16s_gen2::$9 main::$7 main::$8 main::x#0 bitmap_plot::x#0 ]
zp[4]:30 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
zp[2]:34 [ sin16s::x1#0 mul16s::$13 mul16s::$17 ]
zp[2]:36 [ div32u16u::quotient_hi#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mul16s::b#3 mul16s::b#1 mul16s::b#2 main::cos_x#0 main::sin_y#0 main::$31 main::$33 main::$32 main::$34 ]
zp[4]:28 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
zp[2]:32 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
zp[2]:34 [ div32u16u::quotient_hi#0 sin16s::x1#0 sin16s_gen2::$9 mul16s::$13 mul16s::$17 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]

View File

@ -150,7 +150,7 @@ bitmap_init: scope:[bitmap_init] from main
(byte*) bitmap_init::gfx#1 ← phi( main/(byte*) bitmap_init::gfx#0 )
(byte*) bitmap_gfx#1 ← (byte*) bitmap_init::gfx#1
(byte*) bitmap_screen#1 ← (byte*) bitmap_init::screen#1
(byte) bitmap_init::bits#0 ← (number) $80
(byte) bitmap_init::bits#0 ← (byte) $80
(byte) bitmap_init::x#0 ← (byte) 0
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
@ -610,8 +610,8 @@ main::@13: scope:[main] from main::toD0181_@return
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
(byte~) main::$2 ← (byte) main::toD0181_return#3
*((const byte*) D018) ← (byte~) main::$2
(byte) main::i#0 ← (number) 0
(byte) main::a#0 ← (number) 0
(byte) main::i#0 ← (byte) 0
(byte) main::a#0 ← (byte) 0
to:main::@1
main::@1: scope:[main] from main::@13 main::@16
(byte*) bitmap_screen#17 ← phi( main::@13/(byte*) bitmap_screen#20 main::@16/(byte*) bitmap_screen#21 )
@ -686,7 +686,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*)(number) $2000
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) COSTAB = (const byte*) SINTAB+(number) $40
(const byte*) D011 = (byte*)(number) $d011
(const byte*) D018 = (byte*)(number) $d018
@ -696,10 +696,10 @@ SYMBOL TABLE SSA
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN = (byte*)(number) $400
(const byte*) SINTAB[(number) $180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0
(number~) abs_u16::$1
@ -1201,7 +1201,6 @@ Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bit
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $40 in
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#0 ← (number) $80
Adding number conversion cast (unumber) 1 in (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1
Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#2 ← (number) $80
@ -1244,8 +1243,6 @@ Adding number conversion cast (unumber) main::toD0181_$6 in (number~) main::toD0
Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (number) $f
Adding number conversion cast (unumber) main::toD0181_$7 in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (unumber)(number) $f
Adding number conversion cast (unumber) main::toD0181_$8 in (number~) main::toD0181_$8 ← (unumber~) main::toD0181_$3 | (unumber~) main::toD0181_$7
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) main::a#0 ← (number) 0
Adding number conversion cast (unumber) 8 in (bool~) main::$3 ← (byte) main::i#2 != (number) 8
Adding number conversion cast (unumber) $78 in (number~) main::$5 ← (word~) main::$4 + (number) $78
Adding number conversion cast (unumber) main::$5 in (number~) main::$5 ← (word~) main::$4 + (unumber)(number) $78
@ -1260,7 +1257,6 @@ Adding number conversion cast (unumber) $3e7 in (byte*~) main::$16 ← (const by
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3
Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80
Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80
Inlining cast (byte) memset::c#1 ← (unumber)(number) 0
Inlining cast (byte~) bitmap_line::$15 ← (byte)(word) bitmap_line::y#3
@ -1272,8 +1268,6 @@ Inlining cast (word) sgn_u16::return#3 ← (unumber)(number) 1
Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1
Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1
Inlining cast (byte) main::i#0 ← (unumber)(number) 0
Inlining cast (byte) main::a#0 ← (unumber)(number) 0
Inlining cast (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2)
Inlining cast (word~) main::$6 ← (word)*((const byte*) SINTAB + (byte) main::a#2)
Inlining cast (word~) main::$8 ← (word)*((const byte*) COSTAB + (unumber~) main::$7)
@ -1285,7 +1279,6 @@ Simplifying constant pointer cast (byte*) 8192
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $80
@ -1313,8 +1306,6 @@ Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast $78
Simplifying constant integer cast $20
@ -1325,7 +1316,6 @@ Simplifying constant integer cast $3e7
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
@ -1350,8 +1340,6 @@ Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) $78
Finalized unsigned number type (byte) $20
@ -4647,10 +4635,10 @@ FINAL SYMBOL TABLE
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN = (byte*) 1024
(const byte*) SINTAB[(number) $180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0 reg byte a 4.0
(byte~) abs_u16::$1 reg byte a 4.0

View File

@ -11,10 +11,10 @@
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN = (byte*) 1024
(const byte*) SINTAB[(number) $180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0 reg byte a 4.0
(byte~) abs_u16::$1 reg byte a 4.0

View File

@ -58,7 +58,7 @@ plot: scope:[plot] from plots::@2
[25] (byte~) plot::$7 ← *((const byte*) plot_xlo + (byte) plot::x#0)
[26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7
[27] (byte~) plot::$8 ← *((const byte*) plot_yhi + (byte) plot::y#0)
[28] (word) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$8
[28] (word) plot::plotter_y#1 ← (word) 0 hi= (byte~) plot::$8
[29] (byte~) plot::$9 ← *((const byte*) plot_ylo + (byte) plot::y#0)
[30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9
[31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2

View File

@ -75,7 +75,7 @@ main::@return: scope:[main] from main::@7
(void()) plots()
plots: scope:[plots] from main::@3
(byte) plots::i#0 ← (number) 0
(byte) plots::i#0 ← (byte) 0
to:plots::@1
plots::@1: scope:[plots] from plots plots::@7
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@7/(byte) plots::i#1 )
@ -101,7 +101,7 @@ plot: scope:[plot] from plots::@2
(byte) plot::y#1 ← phi( plots::@2/(byte) plot::y#0 )
(byte) plot::x#1 ← phi( plots::@2/(byte) plot::x#0 )
(byte*) plot::plotter_x#0 ← (byte*)(number) 0
(word) plot::plotter_y#0 ← (number) 0
(word) plot::plotter_y#0 ← (word) 0
(byte~) plot::$6 ← *((const byte*) plot_xhi + (byte) plot::x#1)
(byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6
(byte~) plot::$7 ← *((const byte*) plot_xlo + (byte) plot::x#1)
@ -121,7 +121,7 @@ plot::@return: scope:[plot] from plot
(void()) init_plot_tables()
init_plot_tables: scope:[init_plot_tables] from main::@5
(byte) init_plot_tables::bits#0 ← (number) $80
(byte) init_plot_tables::bits#0 ← (byte) $80
(byte) init_plot_tables::x#0 ← (byte) 0
to:init_plot_tables::@1
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
@ -360,8 +360,8 @@ SYMBOL TABLE SSA
(byte) plots::i#3
(byte) plots::i#4
(const byte) plots_cnt = (byte) 8
(const byte*) plots_x[] = { (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28 }
(const byte*) plots_y[] = { (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28 }
(const byte*) plots_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 }
(const byte*) plots_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 }
Adding number conversion cast (unumber) 0 in *((const byte*) BGCOL) ← (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) FGCOL) ← (number) 0
@ -373,9 +373,6 @@ Adding number conversion cast (unumber) (word)BITMAP/$400 in (number~) main::$5
Adding number conversion cast (unumber) main::$5 in (number~) main::$5 ← (unumber~) main::$4 | (unumber)(word)(const byte*) BITMAP/(number) $400
Adding number conversion cast (unumber) $400 in (unumber~) main::$5 ← (unumber~) main::$4 | (unumber)(word)(const byte*) BITMAP/(number) $400
Adding number conversion cast (unumber) $ff in (bool~) main::$9 ← *((const byte*) RASTER) != (number) $ff
Adding number conversion cast (unumber) 0 in (byte) plots::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (word) plot::plotter_y#0 ← (number) 0
Adding number conversion cast (unumber) $80 in (byte) init_plot_tables::bits#0 ← (number) $80
Adding number conversion cast (unumber) $f8 in (number~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (number) $f8
Adding number conversion cast (unumber) init_plot_tables::$0 in (number~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (unumber)(number) $f8
Adding number conversion cast (unumber) 2 in (number~) init_plot_tables::$1 ← (byte) init_plot_tables::bits#3 / (number) 2
@ -398,30 +395,11 @@ Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 0
Inlining cast *((const byte*) FGCOL) ← (unumber)(number) 0
Inlining cast (word~) main::$3 ← (word)(const byte*) SCREEN
Inlining cast (byte~) main::$6 ← (byte)(unumber~) main::$5
Inlining cast (byte) plots::i#0 ← (unumber)(number) 0
Inlining cast (word) plot::plotter_y#0 ← (unumber)(number) 0
Inlining cast (byte) init_plot_tables::bits#0 ← (unumber)(number) $80
Inlining cast (byte) init_plot_tables::bits#2 ← (unumber)(number) $80
Inlining cast *((byte*) init_screen::b#3) ← (unumber)(number) 0
Inlining cast *((byte*) init_screen::c#3) ← (unumber)(number) $14
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast $3c
Simplifying constant integer cast $50
Simplifying constant integer cast $6e
Simplifying constant integer cast $50
Simplifying constant integer cast $3c
Simplifying constant integer cast $28
Simplifying constant integer cast $a
Simplifying constant integer cast $28
Simplifying constant integer cast $a
Simplifying constant integer cast $28
Simplifying constant integer cast $3c
Simplifying constant integer cast $50
Simplifying constant integer cast $6e
Simplifying constant integer cast $50
Simplifying constant integer cast $3c
Simplifying constant integer cast $28
Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53266
Simplifying constant pointer cast (byte*) 53272
@ -435,10 +413,7 @@ Simplifying constant integer cast $40
Simplifying constant integer cast (word)(const byte*) BITMAP/(unumber)(number) $400
Simplifying constant integer cast $400
Simplifying constant integer cast $ff
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 0
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast $f8
Simplifying constant integer cast 2
Simplifying constant integer cast 0
@ -458,9 +433,6 @@ Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) $40
Finalized unsigned number type (word) $400
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $f8
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
@ -577,7 +549,7 @@ Inlining constant with var siblings (const byte*) init_screen::c#0
Constant inlined plots::i#0 = (byte) 0
Constant inlined init_plot_tables::bits#2 = (byte) $80
Constant inlined init_plot_tables::bits#0 = (byte) $80
Constant inlined plot::plotter_y#0 = (byte) 0
Constant inlined plot::plotter_y#0 = (word) 0
Constant inlined plot::plotter_x#0 = (byte*) 0
Constant inlined init_screen::$1 = (const byte*) SCREEN+(word) $400
Constant inlined main::$1 = (const byte) BMM|(const byte) DEN|(const byte) RSEL
@ -716,7 +688,7 @@ plot: scope:[plot] from plots::@2
[25] (byte~) plot::$7 ← *((const byte*) plot_xlo + (byte) plot::x#0)
[26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7
[27] (byte~) plot::$8 ← *((const byte*) plot_yhi + (byte) plot::y#0)
[28] (word) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$8
[28] (word) plot::plotter_y#1 ← (word) 0 hi= (byte~) plot::$8
[29] (byte~) plot::$9 ← *((const byte*) plot_ylo + (byte) plot::y#0)
[30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9
[31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2
@ -1086,7 +1058,7 @@ plot: {
ldy.z y
lda plot_yhi,y
sta.z __8
// [28] (word) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuz2
// [28] (word) plot::plotter_y#1 ← (word) 0 hi= (byte~) plot::$8 -- vwuz1=vwuc1_sethi_vbuz2
lda.z __8
sta.z plotter_y+1
lda #<0
@ -1611,7 +1583,7 @@ plot: {
// [27] (byte~) plot::$8 ← *((const byte*) plot_yhi + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1
ldy.z y
lda plot_yhi,y
// [28] (word) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa
// [28] (word) plot::plotter_y#1 ← (word) 0 hi= (byte~) plot::$8 -- vwuz1=vwuc1_sethi_vbuaa
sta.z plotter_y+1
lda #<0
sta.z plotter_y
@ -2170,7 +2142,7 @@ plot: {
// [27] (byte~) plot::$8 ← *((const byte*) plot_yhi + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1
ldy.z y
lda plot_yhi,y
// [28] (word) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa
// [28] (word) plot::plotter_y#1 ← (word) 0 hi= (byte~) plot::$8 -- vwuz1=vwuc1_sethi_vbuaa
sta.z plotter_y+1
lda #<0
sta.z plotter_y

View File

@ -78,7 +78,7 @@ main::@4: scope:[main] from main::@3
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
*((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(number) 3
*((const byte*) BORDERCOL) ← (number) 0
(byte) main::rst#0 ← (number) $42
(byte) main::rst#0 ← (byte) $42
to:main::@6
main::@6: scope:[main] from main::@4 main::@6
(byte) main::rst#2 ← phi( main::@4/(byte) main::rst#0 main::@6/(byte) main::rst#2 )
@ -163,7 +163,7 @@ gfx_init_plane_charset8::@9: scope:[gfx_init_plane_charset8] from gfx_init_plan
(byte*) gfx_init_plane_charset8::gfxa#0 ← (byte*)(number) $4000+(word)(const byte*) CHARSET8&(number) $3fff
(byte*) gfx_init_plane_charset8::chargen#0 ← (const byte*) CHARGEN+(number) 1
*((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM
(byte) gfx_init_plane_charset8::col#0 ← (number) 0
(byte) gfx_init_plane_charset8::col#0 ← (byte) 0
(byte) gfx_init_plane_charset8::ch#0 ← (byte) 0
to:gfx_init_plane_charset8::@1
gfx_init_plane_charset8::@1: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@9
@ -191,7 +191,7 @@ gfx_init_plane_charset8::@3: scope:[gfx_init_plane_charset8] from gfx_init_plan
(byte) gfx_init_plane_charset8::col#4 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::col#1 )
(byte*) gfx_init_plane_charset8::gfxa#3 ← phi( gfx_init_plane_charset8::@2/(byte*) gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::@4/(byte*) gfx_init_plane_charset8::gfxa#1 )
(byte) gfx_init_plane_charset8::bits#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::bits#1 )
(byte) gfx_init_plane_charset8::c#0 ← (number) 0
(byte) gfx_init_plane_charset8::c#0 ← (byte) 0
(number~) gfx_init_plane_charset8::$2 ← (byte) gfx_init_plane_charset8::bits#2 & (number) $80
(bool~) gfx_init_plane_charset8::$3 ← (number~) gfx_init_plane_charset8::$2 != (number) 0
(bool~) gfx_init_plane_charset8::$4 ← ! (bool~) gfx_init_plane_charset8::$3
@ -271,13 +271,13 @@ SYMBOL TABLE SSA
(const byte*) CHARSET8 = (byte*)(number) $8000
(const byte*) CIA2_PORT_A = (byte*)(number) $dd00
(const byte*) CIA2_PORT_A_DDR = (byte*)(number) $dd02
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_CHUNKY = (byte) $40
(const byte*) DTV_CONTROL = (byte*)(number) $d03c
(const byte*) DTV_FEATURE = (byte*)(number) $d03f
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte*) DTV_PALETTE = (byte*)(number) $d200
(const byte*) DTV_PLANEA_MODULO_HI = (byte*)(number) $d039
(const byte*) DTV_PLANEA_MODULO_LO = (byte*)(number) $d038
@ -293,19 +293,19 @@ SYMBOL TABLE SSA
(const byte*) DTV_PLANEB_STEP = (byte*)(number) $d04c
(const byte*) PROCPORT = (byte*)(number) 1
(const byte*) PROCPORT_DDR = (byte*)(number) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $7c00
(const byte*) VIC_CONTROL = (byte*)(number) $d011
(const byte*) VIC_CONTROL2 = (byte*)(number) $d016
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*)(number) $ff
@ -476,7 +476,6 @@ Adding number conversion cast (unumber) $3fff in *((const byte*) VIC_MEMORY) ←
Adding number conversion cast (unumber) VIC_DEN|VIC_ECM|VIC_RSEL|3 in *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) 3 in *((const byte*) VIC_CONTROL) ← ((unumber)) (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) 0 in *((const byte*) BORDERCOL) ← (number) 0
Adding number conversion cast (unumber) $42 in (byte) main::rst#0 ← (number) $42
Adding number conversion cast (unumber) 7 in (number~) main::$3 ← (byte) main::rst#1 & (number) 7
Adding number conversion cast (unumber) main::$3 in (number~) main::$3 ← (byte) main::rst#1 & (unumber)(number) 7
Adding number conversion cast (unumber) main::$4 in (number~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (unumber~) main::$3
@ -493,8 +492,6 @@ Adding number conversion cast (unumber) gfx_init_screen0::$3 in (number~) gfx_in
Adding number conversion cast (unumber) $4000 in (byte) gfx_init_plane_charset8::gfxbCpuBank#0 ← (byte)(const byte*) CHARSET8/(number) $4000
Adding number conversion cast (unumber) $3fff in (byte*) gfx_init_plane_charset8::gfxa#0 ← (byte*)(number) $4000+(word)(const byte*) CHARSET8&(number) $3fff
Adding number conversion cast (unumber) 1 in (byte*) gfx_init_plane_charset8::chargen#0 ← (const byte*) CHARGEN+(number) 1
Adding number conversion cast (unumber) 0 in (byte) gfx_init_plane_charset8::col#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) gfx_init_plane_charset8::c#0 ← (number) 0
Adding number conversion cast (unumber) $80 in (number~) gfx_init_plane_charset8::$2 ← (byte) gfx_init_plane_charset8::bits#2 & (number) $80
Adding number conversion cast (unumber) gfx_init_plane_charset8::$2 in (number~) gfx_init_plane_charset8::$2 ← (byte) gfx_init_plane_charset8::bits#2 & (unumber)(number) $80
Adding number conversion cast (unumber) 0 in (bool~) gfx_init_plane_charset8::$3 ← (unumber~) gfx_init_plane_charset8::$2 != (number) 0
@ -519,9 +516,6 @@ Inlining cast *((const byte*) CIA2_PORT_A) ← (unumber)(unumber)(number) 3^(byt
Inlining cast *((const byte*) VIC_MEMORY) ← (unumber)(byte)(word)(const byte*) SCREEN&(unumber)(number) $3fff/(unumber)(number) $40|(unumber)>(word)(const byte*) SCREEN&(unumber)(number) $3fff/(unumber)(number) 4
Inlining cast *((const byte*) VIC_CONTROL) ← (unumber)(const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 0
Inlining cast (byte) main::rst#0 ← (unumber)(number) $42
Inlining cast (byte) gfx_init_plane_charset8::col#0 ← (unumber)(number) 0
Inlining cast (byte) gfx_init_plane_charset8::c#0 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 0
Simplifying constant pointer cast (byte*) 1
@ -574,7 +568,6 @@ Simplifying constant integer cast 4
Simplifying constant integer cast (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(unumber)(number) 3
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast $42
Simplifying constant integer cast 7
Simplifying constant integer cast $10
Simplifying constant integer cast $f2
@ -585,8 +578,6 @@ Simplifying constant integer cast $4000
Simplifying constant integer cast $4000
Simplifying constant integer cast $3fff
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 2
@ -609,7 +600,6 @@ Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $42
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $f2
@ -620,8 +610,6 @@ Finalized unsigned number type (word) $4000
Finalized unsigned number type (word) $4000
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
@ -2637,13 +2625,13 @@ FINAL SYMBOL TABLE
(const byte*) CHARSET8 = (byte*) 32768
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_CHUNKY = (byte) $40
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
(const byte*) DTV_PLANEA_MODULO_LO = (byte*) 53304
@ -2659,19 +2647,19 @@ FINAL SYMBOL TABLE
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 31744
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte*) VIC_CONTROL2 = (byte*) 53270
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255

View File

@ -6,13 +6,13 @@
(const byte*) CHARSET8 = (byte*) 32768
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_CHUNKY = (byte) $40
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
(const byte*) DTV_PLANEA_MODULO_LO = (byte*) 53304
@ -28,19 +28,19 @@
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 31744
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte*) VIC_CONTROL2 = (byte*) 53270
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255

View File

@ -69,7 +69,7 @@ main::@4: scope:[main] from main::@3
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
*((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(number) 3
*((const byte*) BORDERCOL) ← (number) 0
(byte) main::rst#0 ← (number) $42
(byte) main::rst#0 ← (byte) $42
to:main::@6
main::@6: scope:[main] from main::@4 main::@6
(byte) main::rst#2 ← phi( main::@4/(byte) main::rst#0 main::@6/(byte) main::rst#2 )
@ -182,14 +182,14 @@ SYMBOL TABLE SSA
(const byte*) CHUNKY = (byte*)(number) $8000
(const byte*) CIA2_PORT_A = (byte*)(number) $dd00
(const byte*) CIA2_PORT_A_DDR = (byte*)(number) $dd02
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_COLORRAM_OFF = (number) $10
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_CHUNKY = (byte) $40
(const byte) DTV_COLORRAM_OFF = (byte) $10
(const byte*) DTV_CONTROL = (byte*)(number) $d03c
(const byte*) DTV_FEATURE = (byte*)(number) $d03f
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte*) DTV_PALETTE = (byte*)(number) $d200
(const byte*) DTV_PLANEB_MODULO_HI = (byte*)(number) $d048
(const byte*) DTV_PLANEB_MODULO_LO = (byte*)(number) $d047
@ -199,17 +199,17 @@ SYMBOL TABLE SSA
(const byte*) DTV_PLANEB_STEP = (byte*)(number) $d04c
(const byte*) PROCPORT = (byte*)(number) 1
(const byte*) PROCPORT_DDR = (byte*)(number) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) VIC_CONTROL = (byte*)(number) $d011
(const byte*) VIC_CONTROL2 = (byte*)(number) $d016
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*)(number) $ff
@ -313,7 +313,6 @@ Adding number conversion cast (unumber) $3fff in *((const byte*) VIC_MEMORY) ←
Adding number conversion cast (unumber) VIC_DEN|VIC_ECM|VIC_RSEL|3 in *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) 3 in *((const byte*) VIC_CONTROL) ← ((unumber)) (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) 0 in *((const byte*) BORDERCOL) ← (number) 0
Adding number conversion cast (unumber) $42 in (byte) main::rst#0 ← (number) $42
Adding number conversion cast (unumber) 7 in (number~) main::$3 ← (byte) main::rst#1 & (number) 7
Adding number conversion cast (unumber) main::$3 in (number~) main::$3 ← (byte) main::rst#1 & (unumber)(number) 7
Adding number conversion cast (unumber) main::$4 in (number~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (unumber~) main::$3
@ -336,7 +335,6 @@ Inlining cast *((const byte*) CIA2_PORT_A) ← (unumber)(unumber)(number) 3^(byt
Inlining cast *((const byte*) VIC_MEMORY) ← (unumber)(byte)(word)(const byte*) CHUNKY&(unumber)(number) $3fff/(unumber)(number) $40|(unumber)>(word)(const byte*) CHUNKY&(unumber)(number) $3fff/(unumber)(number) 4
Inlining cast *((const byte*) VIC_CONTROL) ← (unumber)(const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 0
Inlining cast (byte) main::rst#0 ← (unumber)(number) $42
Inlining cast (byte~) gfx_init_chunky::$6 ← (byte)(word~) gfx_init_chunky::$5
Inlining cast (byte*) gfx_init_chunky::gfxb#2 ← (byte*)(number) $4000
Successful SSA optimization Pass2InlineCast
@ -379,7 +377,6 @@ Simplifying constant integer cast 4
Simplifying constant integer cast (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(unumber)(number) 3
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast $42
Simplifying constant integer cast 7
Simplifying constant integer cast $10
Simplifying constant integer cast $f2
@ -402,7 +399,6 @@ Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $42
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $f2
@ -1812,14 +1808,14 @@ FINAL SYMBOL TABLE
(const byte*) CHUNKY = (byte*) 32768
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_COLORRAM_OFF = (number) $10
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_CHUNKY = (byte) $40
(const byte) DTV_COLORRAM_OFF = (byte) $10
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) DTV_PLANEB_MODULO_HI = (byte*) 53320
(const byte*) DTV_PLANEB_MODULO_LO = (byte*) 53319
@ -1829,17 +1825,17 @@ FINAL SYMBOL TABLE
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte*) VIC_CONTROL2 = (byte*) 53270
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255

View File

@ -5,14 +5,14 @@
(const byte*) CHUNKY = (byte*) 32768
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_COLORRAM_OFF = (number) $10
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_CHUNKY = (byte) $40
(const byte) DTV_COLORRAM_OFF = (byte) $10
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) DTV_PLANEB_MODULO_HI = (byte*) 53320
(const byte*) DTV_PLANEB_MODULO_LO = (byte*) 53319
@ -22,17 +22,17 @@
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte*) VIC_CONTROL2 = (byte*) 53270
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255

View File

@ -97,20 +97,20 @@ SYMBOL TABLE SSA
(const byte*) DTV_BLITTER_SRCB_MOD_LO = (byte*)(number) $d32b
(const byte*) DTV_BLITTER_SRCB_STEP = (byte*)(number) $d32f
(const byte*) DTV_BLITTER_TRANSPARANCY = (byte*)(number) $d33b
(const byte) DTV_BLIT_ADD = (number) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (number) 1
(const byte) DTV_BLIT_DEST_CONT = (number) 8
(const byte) DTV_BLIT_DEST_FWD = (number) 8
(const byte) DTV_BLIT_FORCE_START = (number) 1
(const byte) DTV_BLIT_SRCA_FWD = (number) 2
(const byte) DTV_BLIT_SRCB_FWD = (number) 4
(const byte) DTV_BLIT_STATUS_BUSY = (number) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (number) 0
(const byte) DTV_BLIT_ADD = (byte) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (byte) 1
(const byte) DTV_BLIT_DEST_CONT = (byte) 8
(const byte) DTV_BLIT_DEST_FWD = (byte) 8
(const byte) DTV_BLIT_FORCE_START = (byte) 1
(const byte) DTV_BLIT_SRCA_FWD = (byte) 2
(const byte) DTV_BLIT_SRCB_FWD = (byte) 4
(const byte) DTV_BLIT_STATUS_BUSY = (byte) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (byte) 0
(const byte*) DTV_FEATURE = (byte*)(number) $d03f
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) SCREEN = (byte*)(number) $400
(const byte*) SRCA[] = (string) "camelot rules!"
(const byte*) SRCB[] = { (byte)(number) $80 }
(const byte*) SRCB[] = { (byte) $80 }
(void()) main()
(byte~) main::$0
(bool~) main::$1
@ -181,7 +181,6 @@ Simplifying constant pointer cast (byte*) 54074
Simplifying constant pointer cast (byte*) 54075
Simplifying constant pointer cast (byte*) 54079
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $80
Simplifying constant pointer cast (byte*) 54078
Simplifying constant integer cast 0
Simplifying constant integer cast 0
@ -849,17 +848,17 @@ FINAL SYMBOL TABLE
(const byte*) DTV_BLITTER_SRCB_MOD_LO = (byte*) 54059
(const byte*) DTV_BLITTER_SRCB_STEP = (byte*) 54063
(const byte*) DTV_BLITTER_TRANSPARANCY = (byte*) 54075
(const byte) DTV_BLIT_ADD = (number) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (number) 1
(const byte) DTV_BLIT_DEST_CONT = (number) 8
(const byte) DTV_BLIT_DEST_FWD = (number) 8
(const byte) DTV_BLIT_FORCE_START = (number) 1
(const byte) DTV_BLIT_SRCA_FWD = (number) 2
(const byte) DTV_BLIT_SRCB_FWD = (number) 4
(const byte) DTV_BLIT_STATUS_BUSY = (number) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (number) 0
(const byte) DTV_BLIT_ADD = (byte) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (byte) 1
(const byte) DTV_BLIT_DEST_CONT = (byte) 8
(const byte) DTV_BLIT_DEST_FWD = (byte) 8
(const byte) DTV_BLIT_FORCE_START = (byte) 1
(const byte) DTV_BLIT_SRCA_FWD = (byte) 2
(const byte) DTV_BLIT_SRCB_FWD = (byte) 4
(const byte) DTV_BLIT_STATUS_BUSY = (byte) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (byte) 0
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) SCREEN = (byte*) 1024
(const byte*) SRCA[] = (string) "camelot rules!"
(const byte*) SRCB[] = { (byte) $80 }

View File

@ -31,17 +31,17 @@
(const byte*) DTV_BLITTER_SRCB_MOD_LO = (byte*) 54059
(const byte*) DTV_BLITTER_SRCB_STEP = (byte*) 54063
(const byte*) DTV_BLITTER_TRANSPARANCY = (byte*) 54075
(const byte) DTV_BLIT_ADD = (number) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (number) 1
(const byte) DTV_BLIT_DEST_CONT = (number) 8
(const byte) DTV_BLIT_DEST_FWD = (number) 8
(const byte) DTV_BLIT_FORCE_START = (number) 1
(const byte) DTV_BLIT_SRCA_FWD = (number) 2
(const byte) DTV_BLIT_SRCB_FWD = (number) 4
(const byte) DTV_BLIT_STATUS_BUSY = (number) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (number) 0
(const byte) DTV_BLIT_ADD = (byte) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (byte) 1
(const byte) DTV_BLIT_DEST_CONT = (byte) 8
(const byte) DTV_BLIT_DEST_FWD = (byte) 8
(const byte) DTV_BLIT_FORCE_START = (byte) 1
(const byte) DTV_BLIT_SRCA_FWD = (byte) 2
(const byte) DTV_BLIT_SRCB_FWD = (byte) 4
(const byte) DTV_BLIT_STATUS_BUSY = (byte) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (byte) 0
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) SCREEN = (byte*) 1024
(const byte*) SRCA[] = (string) "camelot rules!"
(const byte*) SRCB[] = { (byte) $80 }

View File

@ -107,21 +107,21 @@ SYMBOL TABLE SSA
(const byte*) DTV_BLITTER_SRCB_MOD_LO = (byte*)(number) $d32b
(const byte*) DTV_BLITTER_SRCB_STEP = (byte*)(number) $d32f
(const byte*) DTV_BLITTER_TRANSPARANCY = (byte*)(number) $d33b
(const byte) DTV_BLIT_ADD = (number) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (number) 1
(const byte) DTV_BLIT_DEST_CONT = (number) 8
(const byte) DTV_BLIT_DEST_FWD = (number) 8
(const byte) DTV_BLIT_FORCE_START = (number) 1
(const byte) DTV_BLIT_SRCA_FWD = (number) 2
(const byte) DTV_BLIT_SRCB_FWD = (number) 4
(const byte) DTV_BLIT_STATUS_BUSY = (number) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (number) 0
(const byte) DTV_BLIT_ADD = (byte) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (byte) 1
(const byte) DTV_BLIT_DEST_CONT = (byte) 8
(const byte) DTV_BLIT_DEST_FWD = (byte) 8
(const byte) DTV_BLIT_FORCE_START = (byte) 1
(const byte) DTV_BLIT_SRCA_FWD = (byte) 2
(const byte) DTV_BLIT_SRCB_FWD = (byte) 4
(const byte) DTV_BLIT_STATUS_BUSY = (byte) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (byte) 0
(const byte*) DTV_FEATURE = (byte*)(number) $d03f
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) SCREEN = (byte*)(number) $400
(const byte*) SRCA[] = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
(const byte) SRCA_LEN = (number) 9
(const byte*) SRCB[] = { (byte)(number) $80 }
(const byte) SRCA_LEN = (byte) 9
(const byte*) SRCB[] = { (byte) $80 }
(void()) main()
(byte~) main::$0
(bool~) main::$1
@ -195,7 +195,6 @@ Simplifying constant pointer cast (byte*) 54074
Simplifying constant pointer cast (byte*) 54075
Simplifying constant pointer cast (byte*) 54079
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $80
Simplifying constant pointer cast (byte*) 54078
Simplifying constant integer cast 0
Simplifying constant integer cast 0
@ -983,20 +982,20 @@ FINAL SYMBOL TABLE
(const byte*) DTV_BLITTER_SRCB_MOD_LO = (byte*) 54059
(const byte*) DTV_BLITTER_SRCB_STEP = (byte*) 54063
(const byte*) DTV_BLITTER_TRANSPARANCY = (byte*) 54075
(const byte) DTV_BLIT_ADD = (number) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (number) 1
(const byte) DTV_BLIT_DEST_CONT = (number) 8
(const byte) DTV_BLIT_DEST_FWD = (number) 8
(const byte) DTV_BLIT_FORCE_START = (number) 1
(const byte) DTV_BLIT_SRCA_FWD = (number) 2
(const byte) DTV_BLIT_SRCB_FWD = (number) 4
(const byte) DTV_BLIT_STATUS_BUSY = (number) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (number) 0
(const byte) DTV_BLIT_ADD = (byte) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (byte) 1
(const byte) DTV_BLIT_DEST_CONT = (byte) 8
(const byte) DTV_BLIT_DEST_FWD = (byte) 8
(const byte) DTV_BLIT_FORCE_START = (byte) 1
(const byte) DTV_BLIT_SRCA_FWD = (byte) 2
(const byte) DTV_BLIT_SRCB_FWD = (byte) 4
(const byte) DTV_BLIT_STATUS_BUSY = (byte) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (byte) 0
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) SCREEN = (byte*) 1024
(const byte*) SRCA[] = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
(const byte) SRCA_LEN = (number) 9
(const byte) SRCA_LEN = (byte) 9
(const byte*) SRCB[] = { (byte) $80 }
(void()) main()
(byte~) main::$0 reg byte a 202.0

View File

@ -31,20 +31,20 @@
(const byte*) DTV_BLITTER_SRCB_MOD_LO = (byte*) 54059
(const byte*) DTV_BLITTER_SRCB_STEP = (byte*) 54063
(const byte*) DTV_BLITTER_TRANSPARANCY = (byte*) 54075
(const byte) DTV_BLIT_ADD = (number) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (number) 1
(const byte) DTV_BLIT_DEST_CONT = (number) 8
(const byte) DTV_BLIT_DEST_FWD = (number) 8
(const byte) DTV_BLIT_FORCE_START = (number) 1
(const byte) DTV_BLIT_SRCA_FWD = (number) 2
(const byte) DTV_BLIT_SRCB_FWD = (number) 4
(const byte) DTV_BLIT_STATUS_BUSY = (number) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (number) 0
(const byte) DTV_BLIT_ADD = (byte) $30
(const byte) DTV_BLIT_CLEAR_IRQ = (byte) 1
(const byte) DTV_BLIT_DEST_CONT = (byte) 8
(const byte) DTV_BLIT_DEST_FWD = (byte) 8
(const byte) DTV_BLIT_FORCE_START = (byte) 1
(const byte) DTV_BLIT_SRCA_FWD = (byte) 2
(const byte) DTV_BLIT_SRCB_FWD = (byte) 4
(const byte) DTV_BLIT_STATUS_BUSY = (byte) 1
(const byte) DTV_BLIT_TRANSPARANCY_NONE = (byte) 0
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) SCREEN = (byte*) 1024
(const byte*) SRCA[] = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
(const byte) SRCA_LEN = (number) 9
(const byte) SRCA_LEN = (byte) 9
(const byte*) SRCB[] = { (byte) $80 }
(void()) main()
(byte~) main::$0 reg byte a 202.0

View File

@ -73,12 +73,12 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*)(number) $d021
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_BORDER_OFF = (number) 2
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_BORDER_OFF = (byte) 2
(const byte*) DTV_CONTROL = (byte*)(number) $d03c
(const byte*) DTV_FEATURE = (byte*)(number) $d03f
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte*) DTV_PALETTE = (byte*)(number) $d200
(const byte*) RASTER = (byte*)(number) $d012
(void()) main()
@ -96,7 +96,7 @@ SYMBOL TABLE SSA
(byte) main::c#0
(byte) main::c#1
(byte) main::c#2
(const byte*) main::palette[(number) $10] = { (byte)(number) 0, (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) $e, (byte)(number) $f }
(const byte*) main::palette[(number) $10] = { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f }
(byte) main::r
(byte) main::r#0
(byte) main::r#1
@ -112,22 +112,6 @@ Simplifying constant pointer cast (byte*) 53281
Simplifying constant pointer cast (byte*) 53311
Simplifying constant pointer cast (byte*) 53308
Simplifying constant pointer cast (byte*) 53760
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast 4
Simplifying constant integer cast 5
Simplifying constant integer cast 6
Simplifying constant integer cast 7
Simplifying constant integer cast 8
Simplifying constant integer cast 9
Simplifying constant integer cast $a
Simplifying constant integer cast $b
Simplifying constant integer cast $c
Simplifying constant integer cast $d
Simplifying constant integer cast $e
Simplifying constant integer cast $f
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
@ -574,12 +558,12 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_BORDER_OFF = (number) 2
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_BORDER_OFF = (byte) 2
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) RASTER = (byte*) 53266
(void()) main()

View File

@ -2,12 +2,12 @@
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte) DTV_BADLINE_OFF = (number) $20
(const byte) DTV_BORDER_OFF = (number) 2
(const byte) DTV_BADLINE_OFF = (byte) $20
(const byte) DTV_BORDER_OFF = (byte) 2
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) RASTER = (byte*) 53266
(void()) main()

File diff suppressed because it is too large Load Diff

View File

@ -15,19 +15,19 @@
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte*) COLS = (byte*) 55296
(const byte) DTV_BORDER_OFF = (number) 2
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_COLORRAM_OFF = (number) $10
(const dword) DTV_COLOR_BANK_DEFAULT = (number) $1d800
(const byte) DTV_BORDER_OFF = (byte) 2
(const byte) DTV_CHUNKY = (byte) $40
(const byte) DTV_COLORRAM_OFF = (byte) $10
(const dword) DTV_COLOR_BANK_DEFAULT = (dword) $1d800
(const byte*) DTV_COLOR_BANK_HI = (byte*) 53303
(const byte*) DTV_COLOR_BANK_LO = (byte*) 53302
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) DTV_GRAPHICS_VIC_BANK = (byte*) 53309
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte) DTV_OVERSCAN = (byte) 8
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
@ -44,50 +44,50 @@
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte*) FORM_CHARSET = (byte*) 6144
(const byte*) FORM_COLS[] = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"
(const signed byte) FORM_CURSOR_BLINK = (number) $28
(const signed byte) FORM_CURSOR_BLINK = (signed byte) $28
(const byte*) FORM_SCREEN = (byte*) 1024
(const byte*) FORM_TEXT[] = (string) " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @"
(const byte) KEY_COMMODORE = (number) $3d
(const byte) KEY_CRSR_DOWN = (number) 7
(const byte) KEY_CRSR_RIGHT = (number) 2
(const byte) KEY_CTRL = (number) $3a
(const byte) KEY_LSHIFT = (number) $f
(const byte) KEY_MODIFIER_COMMODORE = (number) 8
(const byte) KEY_MODIFIER_CTRL = (number) 4
(const byte) KEY_MODIFIER_LSHIFT = (number) 1
(const byte) KEY_MODIFIER_RSHIFT = (number) 2
(const byte) KEY_COMMODORE = (byte) $3d
(const byte) KEY_CRSR_DOWN = (byte) 7
(const byte) KEY_CRSR_RIGHT = (byte) 2
(const byte) KEY_CTRL = (byte) $3a
(const byte) KEY_LSHIFT = (byte) $f
(const byte) KEY_MODIFIER_COMMODORE = (byte) 8
(const byte) KEY_MODIFIER_CTRL = (byte) 4
(const byte) KEY_MODIFIER_LSHIFT = (byte) 1
(const byte) KEY_MODIFIER_RSHIFT = (byte) 2
(const byte) KEY_MODIFIER_SHIFT = (const byte) KEY_MODIFIER_LSHIFT|(const byte) KEY_MODIFIER_RSHIFT
(const byte) KEY_RSHIFT = (number) $34
(const byte) KEY_SPACE = (number) $3c
(const dword) PLANE_8BPP_CHUNKY = (number) $20000
(const dword) PLANE_BLANK = (number) $38000
(const dword) PLANE_CHARSET8 = (number) $3c000
(const dword) PLANE_FULL = (number) $3a000
(const dword) PLANE_HORISONTAL = (number) $30000
(const dword) PLANE_HORISONTAL2 = (number) $34000
(const dword) PLANE_VERTICAL = (number) $32000
(const dword) PLANE_VERTICAL2 = (number) $36000
(const byte) KEY_RSHIFT = (byte) $34
(const byte) KEY_SPACE = (byte) $3c
(const dword) PLANE_8BPP_CHUNKY = (dword) $20000
(const dword) PLANE_BLANK = (dword) $38000
(const dword) PLANE_CHARSET8 = (dword) $3c000
(const dword) PLANE_FULL = (dword) $3a000
(const dword) PLANE_HORISONTAL = (dword) $30000
(const dword) PLANE_HORISONTAL2 = (dword) $34000
(const dword) PLANE_VERTICAL = (dword) $32000
(const dword) PLANE_VERTICAL2 = (dword) $36000
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte*) VIC_BITMAP = (byte*) 24576
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CHARSET_ROM = (byte*) 22528
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte*) VIC_CONTROL2 = (byte*) 53270
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(const byte*) VIC_SCREEN0 = (byte*) 16384
(const byte*) VIC_SCREEN1 = (byte*) 17408
(const byte*) VIC_SCREEN2 = (byte*) 18432

View File

@ -305,9 +305,8 @@ mode_8bppchunkybmm: {
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// Linear Graphics Plane B Counter
lda #<PLANEB&$ffff
lda #0
sta DTV_PLANEB_START_LO
lda #>PLANEB&$ffff
sta DTV_PLANEB_START_MI
lda #<PLANEB>>$10
sta DTV_PLANEB_START_HI

View File

@ -224,8 +224,8 @@ mode_8bppchunkybmm: scope:[mode_8bppchunkybmm] from menu::@28
[119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF
[120] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3
[121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL
[122] *((const byte*) DTV_PLANEB_START_LO) ← <<(const dword) mode_8bppchunkybmm::PLANEB
[123] *((const byte*) DTV_PLANEB_START_MI) ← ><(const dword) mode_8bppchunkybmm::PLANEB
[122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0
[123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0
[124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB
[125] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8
[126] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0

View File

@ -386,7 +386,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
(void()) bitmap_init((byte*) bitmap_init::bitmap)
bitmap_init: scope:[bitmap_init] from mode_stdbitmap::@6
(byte*) bitmap_init::bitmap#2 ← phi( mode_stdbitmap::@6/(byte*) bitmap_init::bitmap#0 )
(byte) bitmap_init::bits#0 ← (number) $80
(byte) bitmap_init::bits#0 ← (byte) $80
(byte) bitmap_init::x#0 ← (byte) 0
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
@ -488,8 +488,8 @@ bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1
(byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 )
(byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 )
(word) bitmap_plot::plotter_x#0 ← ((word)) { *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4), *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) }
(word) bitmap_plot::plotter_y#0 ← ((word)) { *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4), *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) }
(word) bitmap_plot::plotter_x#0 ← (word){ *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4), *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) }
(word) bitmap_plot::plotter_y#0 ← (word){ *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4), *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) }
(word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0
(byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$0
(byte~) bitmap_plot::$1 ← *((byte*) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4)
@ -1511,7 +1511,7 @@ menu::@77: scope:[menu] from menu::@48
(byte*) print_char_cursor#69 ← phi( @18/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#67 ← phi( @18/(byte*) print_line_cursor#0 )
(byte*) print_screen#49 ← phi( @18/(byte*) print_screen#0 )
(byte) dtv_control#15 ← (number) 0
(byte) dtv_control#15 ← (byte) 0
to:@72
(void()) mode_ctrl()
@ -2027,7 +2027,7 @@ mode_stdbitmap::@13: scope:[mode_stdbitmap] from mode_stdbitmap::@6
to:mode_stdbitmap::@14
mode_stdbitmap::@14: scope:[mode_stdbitmap] from mode_stdbitmap::@13
(byte) dtv_control#178 ← phi( mode_stdbitmap::@13/(byte) dtv_control#193 )
(byte) mode_stdbitmap::l#0 ← (number) 0
(byte) mode_stdbitmap::l#0 ← (byte) 0
to:mode_stdbitmap::@7
mode_stdbitmap::@7: scope:[mode_stdbitmap] from mode_stdbitmap::@14 mode_stdbitmap::@15
(byte) dtv_control#150 ← phi( mode_stdbitmap::@14/(byte) dtv_control#178 mode_stdbitmap::@15/(byte) dtv_control#179 )
@ -2821,7 +2821,7 @@ mode_8bpppixelcell::@6: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@5
*((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM
(byte*) mode_8bpppixelcell::gfxb#0 ← (const byte*) mode_8bpppixelcell::PLANEB
(byte*) mode_8bpppixelcell::chargen#0 ← (const byte*) mode_8bpppixelcell::CHARGEN
(byte) mode_8bpppixelcell::col#0 ← (number) 0
(byte) mode_8bpppixelcell::col#0 ← (byte) 0
(byte) mode_8bpppixelcell::ch#0 ← (byte) 0
to:mode_8bpppixelcell::@7
mode_8bpppixelcell::@7: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@13 mode_8bpppixelcell::@6
@ -2852,7 +2852,7 @@ mode_8bpppixelcell::@9: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@10
(byte) mode_8bpppixelcell::col#4 ← phi( mode_8bpppixelcell::@10/(byte) mode_8bpppixelcell::col#1 mode_8bpppixelcell::@8/(byte) mode_8bpppixelcell::col#5 )
(byte*) mode_8bpppixelcell::gfxb#4 ← phi( mode_8bpppixelcell::@10/(byte*) mode_8bpppixelcell::gfxb#1 mode_8bpppixelcell::@8/(byte*) mode_8bpppixelcell::gfxb#5 )
(byte) mode_8bpppixelcell::bits#2 ← phi( mode_8bpppixelcell::@10/(byte) mode_8bpppixelcell::bits#1 mode_8bpppixelcell::@8/(byte) mode_8bpppixelcell::bits#0 )
(byte) mode_8bpppixelcell::c#0 ← (number) 0
(byte) mode_8bpppixelcell::c#0 ← (byte) 0
(number~) mode_8bpppixelcell::$8 ← (byte) mode_8bpppixelcell::bits#2 & (number) $80
(bool~) mode_8bpppixelcell::$9 ← (number~) mode_8bpppixelcell::$8 != (number) 0
(bool~) mode_8bpppixelcell::$10 ← ! (bool~) mode_8bpppixelcell::$9
@ -3066,29 +3066,29 @@ SYMBOL TABLE SSA
(const byte*) BGCOL2 = (byte*)(number) $d022
(const byte*) BGCOL3 = (byte*)(number) $d023
(const byte*) BGCOL4 = (byte*)(number) $d024
(const byte) BLACK = (number) 0
(const byte) BLUE = (number) 6
(const byte) BLACK = (byte) 0
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) CIA1_PORT_A = (byte*)(number) $dc00
(const byte*) CIA1_PORT_B = (byte*)(number) $dc01
(const byte*) CIA2_PORT_A = (byte*)(number) $dd00
(const byte*) CIA2_PORT_A_DDR = (byte*)(number) $dd02
(const byte*) COLS = (byte*)(number) $d800
(const byte) DTV_BORDER_OFF = (number) 2
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_COLORRAM_OFF = (number) $10
(const dword) DTV_COLOR_BANK_DEFAULT = (number) $1d800
(const byte) DTV_BORDER_OFF = (byte) 2
(const byte) DTV_CHUNKY = (byte) $40
(const byte) DTV_COLORRAM_OFF = (byte) $10
(const dword) DTV_COLOR_BANK_DEFAULT = (dword) $1d800
(const byte*) DTV_COLOR_BANK_HI = (byte*)(number) $d037
(const byte*) DTV_COLOR_BANK_LO = (byte*)(number) $d036
(const byte*) DTV_CONTROL = (byte*)(number) $d03c
(const byte*) DTV_FEATURE = (byte*)(number) $d03f
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) DTV_GRAPHICS_VIC_BANK = (byte*)(number) $d03d
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte) DTV_OVERSCAN = (byte) 8
(const byte*) DTV_PALETTE = (byte*)(number) $d200
(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a }
(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*)(number) $d039
(const byte*) DTV_PLANEA_MODULO_LO = (byte*)(number) $d038
(const byte*) DTV_PLANEA_START_HI = (byte*)(number) $d045
@ -3101,46 +3101,46 @@ SYMBOL TABLE SSA
(const byte*) DTV_PLANEB_START_LO = (byte*)(number) $d049
(const byte*) DTV_PLANEB_START_MI = (byte*)(number) $d04a
(const byte*) DTV_PLANEB_STEP = (byte*)(number) $d04c
(const byte) GREEN = (number) 5
(const byte) KEY_0 = (number) $23
(const byte) KEY_1 = (number) $38
(const byte) KEY_2 = (number) $3b
(const byte) KEY_3 = (number) 8
(const byte) KEY_4 = (number) $b
(const byte) KEY_6 = (number) $13
(const byte) KEY_7 = (number) $18
(const byte) KEY_8 = (number) $1b
(const byte) KEY_A = (number) $a
(const byte) KEY_B = (number) $1c
(const byte) KEY_C = (number) $14
(const byte) KEY_D = (number) $12
(const byte) KEY_E = (number) $e
(const byte) KEY_H = (number) $1d
(const byte) KEY_L = (number) $2a
(const byte) KEY_O = (number) $26
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_U = (number) $1e
(const byte) LIGHT_GREEN = (number) $d
(const byte) GREEN = (byte) 5
(const byte) KEY_0 = (byte) $23
(const byte) KEY_1 = (byte) $38
(const byte) KEY_2 = (byte) $3b
(const byte) KEY_3 = (byte) 8
(const byte) KEY_4 = (byte) $b
(const byte) KEY_6 = (byte) $13
(const byte) KEY_7 = (byte) $18
(const byte) KEY_8 = (byte) $1b
(const byte) KEY_A = (byte) $a
(const byte) KEY_B = (byte) $1c
(const byte) KEY_C = (byte) $14
(const byte) KEY_D = (byte) $12
(const byte) KEY_E = (byte) $e
(const byte) KEY_H = (byte) $1d
(const byte) KEY_L = (byte) $2a
(const byte) KEY_O = (byte) $26
(const byte) KEY_SPACE = (byte) $3c
(const byte) KEY_U = (byte) $1e
(const byte) LIGHT_GREEN = (byte) $d
(const byte*) MENU_TEXT[] = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
(const byte*) PROCPORT = (byte*)(number) 1
(const byte*) PROCPORT_DDR = (byte*)(number) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*)(number) $d012
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CONTROL = (byte*)(number) $d011
(const byte*) VIC_CONTROL2 = (byte*)(number) $d016
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) bitmap_clear()
(byte*~) bitmap_clear::$0
(bool~) bitmap_clear::$1
@ -4004,7 +4004,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#9
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@ -4019,7 +4019,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(label) main::@1
(label) main::@2
@ -4196,7 +4196,7 @@ SYMBOL TABLE SSA
(label) mode_8bppchunkybmm::@8
(label) mode_8bppchunkybmm::@9
(label) mode_8bppchunkybmm::@return
(const dword) mode_8bppchunkybmm::PLANEB = (number) $20000
(const dword) mode_8bppchunkybmm::PLANEB = (dword) $20000
(byte) mode_8bppchunkybmm::c
(byte) mode_8bppchunkybmm::c#0
(byte*) mode_8bppchunkybmm::gfxb
@ -4768,7 +4768,7 @@ SYMBOL TABLE SSA
(byte) mode_sixsfred::i#2
(byte) mode_sixsfred::row
(byte) mode_sixsfred::row#0
(const byte*) mode_sixsfred::row_bitmask[] = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff }
(const byte*) mode_sixsfred::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
(void()) mode_sixsfred2()
(bool~) mode_sixsfred2::$1
(bool~) mode_sixsfred2::$10
@ -4856,7 +4856,7 @@ SYMBOL TABLE SSA
(byte) mode_sixsfred2::i#2
(byte) mode_sixsfred2::row
(byte) mode_sixsfred2::row#0
(const byte*) mode_sixsfred2::row_bitmask[] = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff }
(const byte*) mode_sixsfred2::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
(void()) mode_stdbitmap()
(bool~) mode_stdbitmap::$10
(bool~) mode_stdbitmap::$11
@ -4916,8 +4916,8 @@ SYMBOL TABLE SSA
(byte) mode_stdbitmap::l#3
(byte) mode_stdbitmap::l#4
(const byte) mode_stdbitmap::lines_cnt = (byte) 9
(const byte*) mode_stdbitmap::lines_x[] = { (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 }
(const byte*) mode_stdbitmap::lines_y[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 }
(const byte*) mode_stdbitmap::lines_x[] = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
(const byte*) mode_stdbitmap::lines_y[] = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
(void()) mode_stdchar()
(bool~) mode_stdchar::$1
(byte~) mode_stdchar::$2
@ -5392,7 +5392,6 @@ Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number
Adding number conversion cast (unumber) 7 in (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#20 & (number) 7
Adding number conversion cast (unumber) keyboard_key_pressed::$0 in (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#20 & (unumber)(number) 7
Adding number conversion cast (unumber) 3 in (byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key#20 >> (number) 3
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#0 ← (number) $80
Adding number conversion cast (unumber) $f8 in (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (number) $f8
Adding number conversion cast (unumber) bitmap_init::$0 in (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (unumber)(number) $f8
Adding number conversion cast (unumber) 1 in (byte~) bitmap_init::$2 ← (byte) bitmap_init::bits#3 >> (number) 1
@ -5447,7 +5446,6 @@ Adding number conversion cast (unumber) 0 in (bool~) menu::$38 ← (byte~) menu:
Adding number conversion cast (unumber) 0 in (bool~) menu::$42 ← (byte~) menu::$41 != (number) 0
Adding number conversion cast (unumber) 0 in (bool~) menu::$46 ← (byte~) menu::$45 != (number) 0
Adding number conversion cast (unumber) 0 in (bool~) menu::$50 ← (byte~) menu::$49 != (number) 0
Adding number conversion cast (unumber) 0 in (byte) dtv_control#15 ← (number) 0
Adding number conversion cast (unumber) $ff in (bool~) mode_ctrl::$0 ← *((const byte*) RASTER) != (number) $ff
Adding number conversion cast (unumber) 0 in (bool~) mode_ctrl::$2 ← (byte~) mode_ctrl::$1 != (number) 0
Adding number conversion cast (unumber) 0 in (bool~) mode_ctrl::$5 ← (byte~) mode_ctrl::$4 != (number) 0
@ -5550,7 +5548,6 @@ Adding number conversion cast (unumber) mode_stdbitmap::$6 in (number~) mode_std
Adding number conversion cast (unumber) $10 in (number~) mode_stdbitmap::$7 ← (byte) mode_stdbitmap::col#0 * (number) $10
Adding number conversion cast (unumber) mode_stdbitmap::$7 in (number~) mode_stdbitmap::$7 ← (byte) mode_stdbitmap::col#0 * (unumber)(number) $10
Adding number conversion cast (unumber) mode_stdbitmap::$8 in (number~) mode_stdbitmap::$8 ← (unumber~) mode_stdbitmap::$7 | (byte) mode_stdbitmap::col2#0
Adding number conversion cast (unumber) 0 in (byte) mode_stdbitmap::l#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (number~) mode_stdbitmap::$12 ← (byte) mode_stdbitmap::l#3 + (number) 1
Adding number conversion cast (unumber) mode_stdbitmap::$12 in (number~) mode_stdbitmap::$12 ← (byte) mode_stdbitmap::l#3 + (unumber)(number) 1
Adding number conversion cast (unumber) 1 in (number~) mode_stdbitmap::$13 ← (byte) mode_stdbitmap::l#3 + (number) 1
@ -5711,8 +5708,6 @@ Adding number conversion cast (unumber) mode_8bpppixelcell::$3 in (number~) mode
Adding number conversion cast (unumber) $f in (number~) mode_8bpppixelcell::$4 ← (byte) mode_8bpppixelcell::ax#2 & (number) $f
Adding number conversion cast (unumber) mode_8bpppixelcell::$4 in (number~) mode_8bpppixelcell::$4 ← (byte) mode_8bpppixelcell::ax#2 & (unumber)(number) $f
Adding number conversion cast (unumber) mode_8bpppixelcell::$5 in (number~) mode_8bpppixelcell::$5 ← (unumber~) mode_8bpppixelcell::$3 | (unumber~) mode_8bpppixelcell::$4
Adding number conversion cast (unumber) 0 in (byte) mode_8bpppixelcell::col#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mode_8bpppixelcell::c#0 ← (number) 0
Adding number conversion cast (unumber) $80 in (number~) mode_8bpppixelcell::$8 ← (byte) mode_8bpppixelcell::bits#2 & (number) $80
Adding number conversion cast (unumber) mode_8bpppixelcell::$8 in (number~) mode_8bpppixelcell::$8 ← (byte) mode_8bpppixelcell::bits#2 & (unumber)(number) $80
Adding number conversion cast (unumber) 0 in (bool~) mode_8bpppixelcell::$9 ← (unumber~) mode_8bpppixelcell::$8 != (number) 0
@ -5747,7 +5742,6 @@ Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80
Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80
Inlining cast *((byte*) bitmap_clear::bitmap#2) ← (unumber)(number) 0
Inlining cast (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$0
@ -5757,7 +5751,6 @@ Inlining cast *((const byte*) CIA2_PORT_A) ← (unumber)(unumber)(number) 3^(byt
Inlining cast *((const byte*) VIC_CONTROL) ← (unumber)(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 0
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 0
Inlining cast (byte) dtv_control#15 ← (unumber)(number) 0
Inlining cast (byte) mode_ctrl::ctrl#7 ← (unumber)(number) 0
Inlining cast (byte) dtv_control#18 ← (unumber)(number) 0
Inlining cast *((const byte*) DTV_CONTROL) ← (unumber)(number) 0
@ -5787,7 +5780,6 @@ Inlining cast *((const byte*) DTV_CONTROL) ← (unumber)(number) 0
Inlining cast *((const byte*) CIA2_PORT_A_DDR) ← (unumber)(number) 3
Inlining cast *((const byte*) CIA2_PORT_A) ← (unumber)(unumber)(number) 3^(byte)(word)(const byte*) mode_stdbitmap::BITMAP/(unumber)(number) $4000
Inlining cast *((const byte*) VIC_CONTROL) ← (unumber)(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast (byte) mode_stdbitmap::l#0 ← (unumber)(number) 0
Inlining cast *((const byte*) CIA2_PORT_A_DDR) ← (unumber)(number) 3
Inlining cast *((const byte*) CIA2_PORT_A) ← (unumber)(unumber)(number) 3^(byte)(word)(const byte*) mode_hicolstdchar::CHARSET/(unumber)(number) $4000
Inlining cast *((const byte*) VIC_CONTROL) ← (unumber)(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
@ -5855,8 +5847,6 @@ Inlining cast *((const byte*) DTV_PLANEB_STEP) ← (unumber)(number) 0
Inlining cast *((const byte*) DTV_PLANEB_MODULO_LO) ← (unumber)(number) 0
Inlining cast *((const byte*) DTV_PLANEB_MODULO_HI) ← (unumber)(number) 0
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 0
Inlining cast (byte) mode_8bpppixelcell::col#0 ← (unumber)(number) 0
Inlining cast (byte) mode_8bpppixelcell::c#0 ← (unumber)(number) 0
Inlining cast *((const byte*) VIC_CONTROL) ← (unumber)(const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast *((const byte*) DTV_PLANEB_STEP) ← (unumber)(number) 8
Inlining cast *((const byte*) DTV_PLANEB_MODULO_LO) ← (unumber)(number) 0
@ -5885,22 +5875,6 @@ Simplifying constant pointer cast (byte*) 56578
Simplifying constant pointer cast (byte*) 53311
Simplifying constant pointer cast (byte*) 53308
Simplifying constant pointer cast (byte*) 53760
Simplifying constant integer cast 0
Simplifying constant integer cast $f
Simplifying constant integer cast $36
Simplifying constant integer cast $be
Simplifying constant integer cast $58
Simplifying constant integer cast $db
Simplifying constant integer cast $86
Simplifying constant integer cast $ff
Simplifying constant integer cast $29
Simplifying constant integer cast $26
Simplifying constant integer cast $3b
Simplifying constant integer cast 5
Simplifying constant integer cast 7
Simplifying constant integer cast $df
Simplifying constant integer cast $9a
Simplifying constant integer cast $a
Simplifying constant pointer cast (byte*) 53306
Simplifying constant pointer cast (byte*) 53307
Simplifying constant pointer cast (byte*) 53317
@ -5917,22 +5891,6 @@ Simplifying constant pointer cast (byte*) 53302
Simplifying constant pointer cast (byte*) 53303
Simplifying constant pointer cast (byte*) 53309
Simplifying constant pointer cast (byte*) 255
Simplifying constant integer cast $fe
Simplifying constant integer cast $fd
Simplifying constant integer cast $fb
Simplifying constant integer cast $f7
Simplifying constant integer cast $ef
Simplifying constant integer cast $df
Simplifying constant integer cast $bf
Simplifying constant integer cast $7f
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast 8
Simplifying constant integer cast $10
Simplifying constant integer cast $20
Simplifying constant integer cast $40
Simplifying constant integer cast $80
Simplifying constant pointer cast (byte*) 32768
Simplifying constant pointer cast (byte*) 38912
Simplifying constant pointer cast (byte*) 32768
@ -5946,26 +5904,6 @@ Simplifying constant pointer cast (byte*) 36864
Simplifying constant pointer cast (byte*) 55296
Simplifying constant pointer cast (byte*) 16384
Simplifying constant pointer cast (byte*) 24576
Simplifying constant integer cast 0
Simplifying constant integer cast $ff
Simplifying constant integer cast $ff
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast $ff
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $c7
Simplifying constant integer cast $c7
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $64
Simplifying constant integer cast $c7
Simplifying constant integer cast $64
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 32768
Simplifying constant pointer cast (byte*) 36864
Simplifying constant pointer cast (byte*) 33792
@ -5981,17 +5919,9 @@ Simplifying constant pointer cast (byte*) 32768
Simplifying constant pointer cast (byte*) 16384
Simplifying constant pointer cast (byte*) 24576
Simplifying constant pointer cast (byte*) 32768
Simplifying constant integer cast 0
Simplifying constant integer cast $55
Simplifying constant integer cast $aa
Simplifying constant integer cast $ff
Simplifying constant pointer cast (byte*) 16384
Simplifying constant pointer cast (byte*) 24576
Simplifying constant pointer cast (byte*) 32768
Simplifying constant integer cast 0
Simplifying constant integer cast $55
Simplifying constant integer cast $aa
Simplifying constant integer cast $ff
Simplifying constant pointer cast (byte*) 15360
Simplifying constant pointer cast (byte*) 16384
Simplifying constant pointer cast (byte*) 53248
@ -6004,7 +5934,6 @@ Simplifying constant integer cast $28
Simplifying constant integer cast $3e8
Simplifying constant integer cast 7
Simplifying constant integer cast 3
Simplifying constant integer cast $80
Simplifying constant integer cast $f8
Simplifying constant integer cast 1
Simplifying constant integer cast 0
@ -6059,7 +5988,6 @@ Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $ff
Simplifying constant integer cast 0
Simplifying constant integer cast 0
@ -6151,7 +6079,6 @@ Simplifying constant integer cast $400
Simplifying constant integer cast $f
Simplifying constant integer cast $f
Simplifying constant integer cast $10
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $10000
@ -6286,8 +6213,6 @@ Simplifying constant integer cast 0
Simplifying constant integer cast $f
Simplifying constant integer cast $10
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 2
@ -6310,7 +6235,6 @@ Finalized unsigned number type (byte) $28
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $f8
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
@ -6356,7 +6280,6 @@ Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
@ -6440,7 +6363,6 @@ Finalized unsigned number type (word) $400
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (dword) $10000
@ -6565,8 +6487,6 @@ Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
@ -7597,6 +7517,8 @@ Simplifying constant evaluating to zero <(const byte*) mode_sixsfred2::PLANEB in
Simplifying constant evaluating to zero >(const byte*) mode_sixsfred2::COLORS/(word) $400 in [1256] *((const byte*) DTV_COLOR_BANK_HI) ← >(const byte*) mode_sixsfred2::COLORS/(word) $400
Simplifying constant evaluating to zero <(const byte*) mode_8bpppixelcell::PLANEA in [1327] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_8bpppixelcell::PLANEA
Simplifying constant evaluating to zero <(const byte*) mode_8bpppixelcell::PLANEB in [1333] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_8bpppixelcell::PLANEB
Simplifying constant evaluating to zero <<(const dword) mode_8bppchunkybmm::PLANEB in [1414] *((const byte*) DTV_PLANEB_START_LO) ← <<(const dword) mode_8bppchunkybmm::PLANEB
Simplifying constant evaluating to zero ><(const dword) mode_8bppchunkybmm::PLANEB in [1415] *((const byte*) DTV_PLANEB_START_MI) ← ><(const dword) mode_8bppchunkybmm::PLANEB
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero bitmap_plot_xhi in [150] (word~) bitmap_clear::$3 ← *((const byte*) bitmap_plot_xhi + (byte) 0) w= *((const byte*) bitmap_plot_xlo + (byte) 0)
Simplifying expression containing zero bitmap_plot_xlo in [150] (word~) bitmap_clear::$3 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo + (byte) 0)
@ -9140,8 +9062,8 @@ mode_8bppchunkybmm: scope:[mode_8bppchunkybmm] from menu::@28
[119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF
[120] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3
[121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL
[122] *((const byte*) DTV_PLANEB_START_LO) ← <<(const dword) mode_8bppchunkybmm::PLANEB
[123] *((const byte*) DTV_PLANEB_START_MI) ← ><(const dword) mode_8bppchunkybmm::PLANEB
[122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0
[123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0
[124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB
[125] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8
[126] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0
@ -12763,12 +12685,12 @@ mode_8bppchunkybmm: {
// [121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL -- _deref_pbuc1=vbuc2
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// [122] *((const byte*) DTV_PLANEB_START_LO) ← <<(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2
// [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 -- _deref_pbuc1=vbuc2
// Linear Graphics Plane B Counter
lda #<PLANEB&$ffff
lda #0
sta DTV_PLANEB_START_LO
// [123] *((const byte*) DTV_PLANEB_START_MI) ← ><(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2
lda #>PLANEB&$ffff
// [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 -- _deref_pbuc1=vbuc2
lda #0
sta DTV_PLANEB_START_MI
// [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2
lda #<PLANEB>>$10
@ -17433,8 +17355,8 @@ Statement [117] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN [ menu::c#2 ]
Statement [119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [120] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [122] *((const byte*) DTV_PLANEB_START_LO) ← <<(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [123] *((const byte*) DTV_PLANEB_START_MI) ← ><(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [125] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [126] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
@ -17899,8 +17821,8 @@ Statement [117] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN [ menu::c#2 ]
Statement [119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [120] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [122] *((const byte*) DTV_PLANEB_START_LO) ← <<(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [123] *((const byte*) DTV_PLANEB_START_MI) ← ><(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [125] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
Statement [126] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a
@ -19613,12 +19535,12 @@ mode_8bppchunkybmm: {
// [121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL -- _deref_pbuc1=vbuc2
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// [122] *((const byte*) DTV_PLANEB_START_LO) ← <<(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2
// [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 -- _deref_pbuc1=vbuc2
// Linear Graphics Plane B Counter
lda #<PLANEB&$ffff
lda #0
sta DTV_PLANEB_START_LO
// [123] *((const byte*) DTV_PLANEB_START_MI) ← ><(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2
lda #>PLANEB&$ffff
// [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 -- _deref_pbuc1=vbuc2
lda #0
sta DTV_PLANEB_START_MI
// [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2
lda #<PLANEB>>$10
@ -24044,6 +23966,7 @@ Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #>0
Removing instruction lda #0
Removing instruction lda #0
@ -24706,27 +24629,27 @@ FINAL SYMBOL TABLE
(const byte*) BGCOL2 = (byte*) 53282
(const byte*) BGCOL3 = (byte*) 53283
(const byte*) BGCOL4 = (byte*) 53284
(const byte) BLACK = (number) 0
(const byte) BLUE = (number) 6
(const byte) BLACK = (byte) 0
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CIA1_PORT_A = (byte*) 56320
(const byte*) CIA1_PORT_B = (byte*) 56321
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte*) COLS = (byte*) 55296
(const byte) DTV_BORDER_OFF = (number) 2
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_COLORRAM_OFF = (number) $10
(const dword) DTV_COLOR_BANK_DEFAULT = (number) $1d800
(const byte) DTV_BORDER_OFF = (byte) 2
(const byte) DTV_CHUNKY = (byte) $40
(const byte) DTV_COLORRAM_OFF = (byte) $10
(const dword) DTV_COLOR_BANK_DEFAULT = (dword) $1d800
(const byte*) DTV_COLOR_BANK_HI = (byte*) 53303
(const byte*) DTV_COLOR_BANK_LO = (byte*) 53302
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) DTV_GRAPHICS_VIC_BANK = (byte*) 53309
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte) DTV_OVERSCAN = (byte) 8
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
@ -24741,46 +24664,46 @@ FINAL SYMBOL TABLE
(const byte*) DTV_PLANEB_START_LO = (byte*) 53321
(const byte*) DTV_PLANEB_START_MI = (byte*) 53322
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte) GREEN = (number) 5
(const byte) KEY_0 = (number) $23
(const byte) KEY_1 = (number) $38
(const byte) KEY_2 = (number) $3b
(const byte) KEY_3 = (number) 8
(const byte) KEY_4 = (number) $b
(const byte) KEY_6 = (number) $13
(const byte) KEY_7 = (number) $18
(const byte) KEY_8 = (number) $1b
(const byte) KEY_A = (number) $a
(const byte) KEY_B = (number) $1c
(const byte) KEY_C = (number) $14
(const byte) KEY_D = (number) $12
(const byte) KEY_E = (number) $e
(const byte) KEY_H = (number) $1d
(const byte) KEY_L = (number) $2a
(const byte) KEY_O = (number) $26
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_U = (number) $1e
(const byte) LIGHT_GREEN = (number) $d
(const byte) GREEN = (byte) 5
(const byte) KEY_0 = (byte) $23
(const byte) KEY_1 = (byte) $38
(const byte) KEY_2 = (byte) $3b
(const byte) KEY_3 = (byte) 8
(const byte) KEY_4 = (byte) $b
(const byte) KEY_6 = (byte) $13
(const byte) KEY_7 = (byte) $18
(const byte) KEY_8 = (byte) $1b
(const byte) KEY_A = (byte) $a
(const byte) KEY_B = (byte) $1c
(const byte) KEY_C = (byte) $14
(const byte) KEY_D = (byte) $12
(const byte) KEY_E = (byte) $e
(const byte) KEY_H = (byte) $1d
(const byte) KEY_L = (byte) $2a
(const byte) KEY_O = (byte) $26
(const byte) KEY_SPACE = (byte) $3c
(const byte) KEY_U = (byte) $1e
(const byte) LIGHT_GREEN = (byte) $d
(const byte*) MENU_TEXT[] = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte*) VIC_CONTROL2 = (byte*) 53270
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) bitmap_clear()
(label) bitmap_clear::@1
(label) bitmap_clear::@2
@ -25183,7 +25106,7 @@ FINAL SYMBOL TABLE
(label) mode_8bppchunkybmm::@8
(label) mode_8bppchunkybmm::@9
(label) mode_8bppchunkybmm::@return
(const dword) mode_8bppchunkybmm::PLANEB = (number) $20000
(const dword) mode_8bppchunkybmm::PLANEB = (dword) $20000
(byte) mode_8bppchunkybmm::c
(byte) mode_8bppchunkybmm::c#0 reg byte a 2002.0
(byte*) mode_8bppchunkybmm::gfxb
@ -25937,7 +25860,7 @@ reg byte a [ print_str_lines::ch#0 ]
FINAL ASSEMBLER
Score: 2307043
Score: 2307041
// File Comments
// Exploring C64DTV Screen Modes
@ -26529,13 +26452,12 @@ mode_8bppchunkybmm: {
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// *DTV_PLANEB_START_LO = < < PLANEB
// [122] *((const byte*) DTV_PLANEB_START_LO) ← <<(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2
// [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 -- _deref_pbuc1=vbuc2
// Linear Graphics Plane B Counter
lda #<PLANEB&$ffff
lda #0
sta DTV_PLANEB_START_LO
// *DTV_PLANEB_START_MI = > < PLANEB
// [123] *((const byte*) DTV_PLANEB_START_MI) ← ><(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2
lda #>PLANEB&$ffff
// [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 -- _deref_pbuc1=vbuc2
sta DTV_PLANEB_START_MI
// *DTV_PLANEB_START_HI = < > PLANEB
// [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB -- _deref_pbuc1=vbuc2

View File

@ -6,27 +6,27 @@
(const byte*) BGCOL2 = (byte*) 53282
(const byte*) BGCOL3 = (byte*) 53283
(const byte*) BGCOL4 = (byte*) 53284
(const byte) BLACK = (number) 0
(const byte) BLUE = (number) 6
(const byte) BLACK = (byte) 0
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CIA1_PORT_A = (byte*) 56320
(const byte*) CIA1_PORT_B = (byte*) 56321
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte*) COLS = (byte*) 55296
(const byte) DTV_BORDER_OFF = (number) 2
(const byte) DTV_CHUNKY = (number) $40
(const byte) DTV_COLORRAM_OFF = (number) $10
(const dword) DTV_COLOR_BANK_DEFAULT = (number) $1d800
(const byte) DTV_BORDER_OFF = (byte) 2
(const byte) DTV_CHUNKY = (byte) $40
(const byte) DTV_COLORRAM_OFF = (byte) $10
(const dword) DTV_COLOR_BANK_DEFAULT = (dword) $1d800
(const byte*) DTV_COLOR_BANK_HI = (byte*) 53303
(const byte*) DTV_COLOR_BANK_LO = (byte*) 53302
(const byte*) DTV_CONTROL = (byte*) 53308
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte) DTV_FEATURE_ENABLE = (byte) 1
(const byte*) DTV_GRAPHICS_VIC_BANK = (byte*) 53309
(const byte) DTV_HIGHCOLOR = (number) 4
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte) DTV_HIGHCOLOR = (byte) 4
(const byte) DTV_LINEAR = (byte) 1
(const byte) DTV_OVERSCAN = (byte) 8
(const byte*) DTV_PALETTE = (byte*) 53760
(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
@ -41,46 +41,46 @@
(const byte*) DTV_PLANEB_START_LO = (byte*) 53321
(const byte*) DTV_PLANEB_START_MI = (byte*) 53322
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte) GREEN = (number) 5
(const byte) KEY_0 = (number) $23
(const byte) KEY_1 = (number) $38
(const byte) KEY_2 = (number) $3b
(const byte) KEY_3 = (number) 8
(const byte) KEY_4 = (number) $b
(const byte) KEY_6 = (number) $13
(const byte) KEY_7 = (number) $18
(const byte) KEY_8 = (number) $1b
(const byte) KEY_A = (number) $a
(const byte) KEY_B = (number) $1c
(const byte) KEY_C = (number) $14
(const byte) KEY_D = (number) $12
(const byte) KEY_E = (number) $e
(const byte) KEY_H = (number) $1d
(const byte) KEY_L = (number) $2a
(const byte) KEY_O = (number) $26
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_U = (number) $1e
(const byte) LIGHT_GREEN = (number) $d
(const byte) GREEN = (byte) 5
(const byte) KEY_0 = (byte) $23
(const byte) KEY_1 = (byte) $38
(const byte) KEY_2 = (byte) $3b
(const byte) KEY_3 = (byte) 8
(const byte) KEY_4 = (byte) $b
(const byte) KEY_6 = (byte) $13
(const byte) KEY_7 = (byte) $18
(const byte) KEY_8 = (byte) $1b
(const byte) KEY_A = (byte) $a
(const byte) KEY_B = (byte) $1c
(const byte) KEY_C = (byte) $14
(const byte) KEY_D = (byte) $12
(const byte) KEY_E = (byte) $e
(const byte) KEY_H = (byte) $1d
(const byte) KEY_L = (byte) $2a
(const byte) KEY_O = (byte) $26
(const byte) KEY_SPACE = (byte) $3c
(const byte) KEY_U = (byte) $1e
(const byte) LIGHT_GREEN = (byte) $d
(const byte*) MENU_TEXT[] = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte) VIC_BMM = (number) $20
(const byte) VIC_BMM = (byte) $20
(const byte*) VIC_CONTROL = (byte*) 53265
(const byte*) VIC_CONTROL2 = (byte*) 53270
(const byte) VIC_CSEL = (number) 8
(const byte) VIC_DEN = (number) $10
(const byte) VIC_ECM = (number) $40
(const byte) VIC_MCM = (number) $10
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_ECM = (byte) $40
(const byte) VIC_MCM = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RSEL = (byte) 8
(void()) bitmap_clear()
(label) bitmap_clear::@1
(label) bitmap_clear::@2
@ -483,7 +483,7 @@
(label) mode_8bppchunkybmm::@8
(label) mode_8bppchunkybmm::@9
(label) mode_8bppchunkybmm::@return
(const dword) mode_8bppchunkybmm::PLANEB = (number) $20000
(const dword) mode_8bppchunkybmm::PLANEB = (dword) $20000
(byte) mode_8bppchunkybmm::c
(byte) mode_8bppchunkybmm::c#0 reg byte a 2002.0
(byte*) mode_8bppchunkybmm::gfxb

View File

@ -33,7 +33,7 @@ main::@return: scope:[main] from main::@3
return
to:@return
@1: scope:[] from @begin
(byte) idx#4 ← (number) 0
(byte) idx#4 ← (byte) 0
to:@2
(void()) print((word) print::w)
@ -103,19 +103,15 @@ SYMBOL TABLE SSA
Fixing inline constructor with main::$3 ← (byte)$12 w= (byte)$34
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $1234 in (word) print::w#0 ← (number) $1234
Adding number conversion cast (unumber) 0 in (byte) idx#4 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (word) print::w#0 ← (unumber)(number) $1234
Inlining cast (byte) idx#4 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (word*) 1024
Simplifying constant integer cast $1234
Simplifying constant integer cast $12
Simplifying constant integer cast $34
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (word) $1234
Finalized unsigned number type (byte) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte) idx#0 = (byte) idx#8
Alias (byte) idx#1 = (byte) idx#9

View File

@ -42,14 +42,10 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
(const signed byte*) main::sbs[] = { (signed byte)(number) -1, (signed byte)(number) -2, (signed byte)(number) -3, (signed byte)(number) -4 }
(const signed byte*) main::sbs[] = { (signed byte) -1, (signed byte) -2, (signed byte) -3, (signed byte) -4 }
Inlining cast (byte~) main::$0 ← (byte)*((const signed byte*) main::sbs + (byte) main::i#2)
Successful SSA optimization Pass2InlineCast
Simplifying constant integer cast -1
Simplifying constant integer cast -2
Simplifying constant integer cast -3
Simplifying constant integer cast -4
Simplifying constant pointer cast (byte*) 1024
Successful SSA optimization PassNCastSimplification
Simple Condition (bool~) main::$1 [6] if((byte) main::i#1!=rangelast(0,3)) goto main::@1

View File

@ -8,7 +8,7 @@ CONTROL FLOW GRAPH SSA
main: scope:[main] from @1
(byte*) main::screen#0 ← (byte*)(number) $400
(byte*) main::colors#0 ← (byte*)(number) $d800
(byte) main::color#0 ← (number) 1
(byte) main::color#0 ← (byte) 1
(byte) main::row#0 ← (byte) 0
to:main::@1
main::@1: scope:[main] from main main::@3
@ -103,7 +103,6 @@ SYMBOL TABLE SSA
(byte*) main::screen#3
(byte*) main::screen#4
Adding number conversion cast (unumber) 1 in (byte) main::color#0 ← (number) 1
Adding number conversion cast (unumber) $a0 in *((byte*) main::screen#2 + (byte) main::column#2) ← (number) $a0
Adding number conversion cast (unumber) 1 in (number~) main::$0 ← (byte) main::color#3 ^ (number) 1
Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (byte) main::color#3 ^ (unumber)(number) 1
@ -112,19 +111,16 @@ Adding number conversion cast (unumber) main::$2 in (number~) main::$2 ← (byte
Adding number conversion cast (unumber) $28 in (byte*~) main::$3 ← (byte*) main::screen#3 + (number) $28
Adding number conversion cast (unumber) $28 in (byte*~) main::$4 ← (byte*) main::colors#3 + (number) $28
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::color#0 ← (unumber)(number) 1
Inlining cast *((byte*) main::screen#2 + (byte) main::column#2) ← (unumber)(number) $a0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 55296
Simplifying constant integer cast 1
Simplifying constant integer cast $a0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $a0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1

View File

@ -213,12 +213,12 @@ SYMBOL TABLE SSA
(const dword*) CIA2_TIMER_AB = (dword*)(number) $dd04
(const byte*) CIA2_TIMER_A_CONTROL = (byte*)(number) $dd0e
(const byte*) CIA2_TIMER_B_CONTROL = (byte*)(number) $dd0f
(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES = (number) 0
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (number) $40
(const byte) CIA_TIMER_CONTROL_CONTINUOUS = (number) 0
(const byte) CIA_TIMER_CONTROL_START = (number) 1
(const byte) CIA_TIMER_CONTROL_STOP = (number) 0
(const dword) CLOCKS_PER_INIT = (number) $12
(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES = (byte) 0
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40
(const byte) CIA_TIMER_CONTROL_CONTINUOUS = (byte) 0
(const byte) CIA_TIMER_CONTROL_START = (byte) 1
(const byte) CIA_TIMER_CONTROL_STOP = (byte) 0
(const dword) CLOCKS_PER_INIT = (dword) $12
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
@ -1412,9 +1412,9 @@ FINAL SYMBOL TABLE
(const dword*) CIA2_TIMER_AB = (dword*) 56580
(const byte*) CIA2_TIMER_A_CONTROL = (byte*) 56590
(const byte*) CIA2_TIMER_B_CONTROL = (byte*) 56591
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (number) $40
(const byte) CIA_TIMER_CONTROL_START = (number) 1
(const dword) CLOCKS_PER_INIT = (number) $12
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40
(const byte) CIA_TIMER_CONTROL_START = (byte) 1
(const dword) CLOCKS_PER_INIT = (dword) $12
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10

View File

@ -4,9 +4,9 @@
(const dword*) CIA2_TIMER_AB = (dword*) 56580
(const byte*) CIA2_TIMER_A_CONTROL = (byte*) 56590
(const byte*) CIA2_TIMER_B_CONTROL = (byte*) 56591
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (number) $40
(const byte) CIA_TIMER_CONTROL_START = (number) 1
(const dword) CLOCKS_PER_INIT = (number) $12
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40
(const byte) CIA_TIMER_CONTROL_START = (byte) 1
(const dword) CLOCKS_PER_INIT = (dword) $12
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10

View File

@ -210,11 +210,11 @@ SYMBOL TABLE SSA
(const dword*) CIA2_TIMER_AB = (dword*)(number) $dd04
(const byte*) CIA2_TIMER_A_CONTROL = (byte*)(number) $dd0e
(const byte*) CIA2_TIMER_B_CONTROL = (byte*)(number) $dd0f
(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES = (number) 0
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (number) $40
(const byte) CIA_TIMER_CONTROL_CONTINUOUS = (number) 0
(const byte) CIA_TIMER_CONTROL_START = (number) 1
(const byte) CIA_TIMER_CONTROL_STOP = (number) 0
(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES = (byte) 0
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40
(const byte) CIA_TIMER_CONTROL_CONTINUOUS = (byte) 0
(const byte) CIA_TIMER_CONTROL_START = (byte) 1
(const byte) CIA_TIMER_CONTROL_STOP = (byte) 0
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
@ -1324,8 +1324,8 @@ FINAL SYMBOL TABLE
(const dword*) CIA2_TIMER_AB = (dword*) 56580
(const byte*) CIA2_TIMER_A_CONTROL = (byte*) 56590
(const byte*) CIA2_TIMER_B_CONTROL = (byte*) 56591
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (number) $40
(const byte) CIA_TIMER_CONTROL_START = (number) 1
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40
(const byte) CIA_TIMER_CONTROL_START = (byte) 1
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10

View File

@ -4,8 +4,8 @@
(const dword*) CIA2_TIMER_AB = (dword*) 56580
(const byte*) CIA2_TIMER_A_CONTROL = (byte*) 56590
(const byte*) CIA2_TIMER_B_CONTROL = (byte*) 56591
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (number) $40
(const byte) CIA_TIMER_CONTROL_START = (number) 1
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40
(const byte) CIA_TIMER_CONTROL_START = (byte) 1
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10

View File

@ -16,7 +16,7 @@ main::@return: scope:[main] from main
return
to:@return
@1: scope:[] from @begin
(byte) irq_raster_next ← (number) 0
(byte) irq_raster_next ← (byte) 0
to:@2
interrupt(HARDWARE_CLOBBER)(void()) irq()
@ -75,25 +75,20 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(void()) main()
(label) main::@return
Adding number conversion cast (unumber) 0 in (byte) irq_raster_next ← (number) 0
Adding number conversion cast (unumber) $15 in (byte) irq_raster_next ← (byte) irq_raster_next + (number) $15
Adding number conversion cast (unumber) 7 in (number~) irq::$0 ← (byte) irq::raster_next#0 & (number) 7
Adding number conversion cast (unumber) irq::$0 in (number~) irq::$0 ← (byte) irq::raster_next#0 & (unumber)(number) 7
Adding number conversion cast (unumber) 0 in (bool~) irq::$1 ← (unumber~) irq::$0 == (number) 0
Adding number conversion cast (unumber) 1 in (byte) irq::raster_next#1 ← (byte) irq::raster_next#3 - (number) 1
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) irq_raster_next ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (void()**) 788
Simplifying constant pointer cast (byte*) 53280
Simplifying constant pointer cast (byte*) 53266
Simplifying constant integer cast 0
Simplifying constant integer cast $15
Simplifying constant integer cast 7
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $15
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 0

View File

@ -6,7 +6,7 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from @1
(byte) main::idx#0 ← (number) 0
(byte) main::idx#0 ← (byte) 0
(byte) main::a#0 ← (byte) 0
to:main::@1
main::@1: scope:[main] from main main::@3
@ -92,15 +92,8 @@ SYMBOL TABLE SSA
(byte) main::idx#3
(byte) main::idx#4
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::idx#0 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte) main::a#2 = (byte) main::c#0 (byte) main::a#3
Alias (byte) main::d#0 = (byte) main::b#2
Alias (byte) main::e#0 = (byte~) main::$0

View File

@ -2,7 +2,7 @@ Culled Empty Block (label) @1
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte) b#0 ← (number) 0
(byte) b#0 ← (byte) 0
to:@2
(void()) main()
@ -73,19 +73,14 @@ SYMBOL TABLE SSA
(label) main::@2
(label) main::@return
Adding number conversion cast (unumber) 0 in (byte) b#0 ← (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) SCREEN + (number) 0) ← (byte) b#6
Adding number conversion cast (unumber) 1 in *((const byte*) SCREEN + (number) 1) ← (byte) b#2
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) b#0 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte) b#1 = (byte) b#7

View File

@ -10,7 +10,7 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from @1
(byte) main::j#0 ← (byte) 'g'
(byte) main::i#0 ← (number) 0
(byte) main::i#0 ← (byte) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 )
@ -57,16 +57,11 @@ SYMBOL TABLE SSA
(byte) main::j#2
(byte) main::j#3
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
Adding number conversion cast (unumber) $a in (bool~) main::$1 ← (byte) main::i#2 < (number) $a
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::i#0 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast $a
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $a
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte) main::j#2 = (byte) main::j#3

View File

@ -26,7 +26,7 @@ main::@1: scope:[main] from main main::@1
to:main::@2
main::@2: scope:[main] from main::@1
(byte*) main::screen#16 ← phi( main::@1/(byte*) main::screen#2 )
(byte) main::i#0 ← (number) 0
(byte) main::i#0 ← (byte) 0
to:main::@3
main::@3: scope:[main] from main::@2 main::@4
(byte*) main::screen#10 ← phi( main::@2/(byte*) main::screen#16 main::@4/(byte*) main::screen#3 )
@ -42,7 +42,7 @@ main::@4: scope:[main] from main::@3
to:main::@3
main::@5: scope:[main] from main::@3
(byte*) main::screen#18 ← phi( main::@3/(byte*) main::screen#10 )
(byte) main::i1#0 ← (number) 0
(byte) main::i1#0 ← (byte) 0
to:main::@9
main::@9: scope:[main] from main::@16 main::@5
(byte*) main::screen#11 ← phi( main::@16/(byte*) main::screen#17 main::@5/(byte*) main::screen#18 )
@ -214,9 +214,7 @@ SYMBOL TABLE SSA
(byte*) main::screen#9
Adding number conversion cast (unumber) $3e8 in (byte*~) main::$0 ← (byte*) main::screen#0 + (number) $3e8
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) main::$2 ← *((const byte*) main::header + (byte) main::i#2) != (number) 0
Adding number conversion cast (unumber) 0 in (byte) main::i1#0 ← (number) 0
Adding number conversion cast (unumber) 9 in (bool~) main::$3 ← (byte) main::i1#2 <= (number) 9
Adding number conversion cast (unumber) $28 in (byte*) main::screen#1 ← (byte*) main::screen#4 + (number) $28
Adding number conversion cast (unumber) 0 in *((byte*) main::screen#1 + (number) 0) ← (byte~) main::$4
@ -231,14 +229,9 @@ Adding number conversion cast (unumber) 5 in (bool~) main::$13 ← (byte) main::
Adding number conversion cast (unumber) $b in *((byte*) main::screen#8 + (number) $b) ← (byte) '+'
Adding number conversion cast (unumber) $e in *((byte*) main::screen#9 + (number) $e) ← (byte) '+'
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) main::i#0 ← (unumber)(number) 0
Inlining cast (byte) main::i1#0 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $3e8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 9
Simplifying constant integer cast $28
Simplifying constant integer cast 0
@ -255,8 +248,6 @@ Simplifying constant integer cast $e
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 9
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 0

View File

@ -364,7 +364,7 @@ atan2_16::@6: scope:[atan2_16] from atan2_16::@4 atan2_16::@5
[205] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 )
to:atan2_16::@10
atan2_16::@10: scope:[atan2_16] from atan2_16::@19 atan2_16::@6
[206] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(byte) 0 )
[206] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(word) 0 )
[206] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 )
[206] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 )
[206] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 )

View File

@ -53,8 +53,8 @@ Adding struct value member variable copy (byte) main::center_x ← (byte~) main:
Adding struct value member variable copy (byte) main::center_y ← (byte~) main::$5_y
Adding struct value member variable copy (byte) main::center_dist ← (byte~) main::$5_dist
Converted procedure struct value parameter to member unwinding in call (void~) main::$8 ← call startProcessing (byte) main::center_x (byte) main::center_y (byte) main::center_dist
Adding struct value member variable copy (byte) getCharToProcess::closest_x ← (byte)(number) 0
Adding struct value member variable copy (byte) getCharToProcess::closest_y ← (byte)(number) 0
Adding struct value member variable copy (byte) getCharToProcess::closest_x ← (byte) 0
Adding struct value member variable copy (byte) getCharToProcess::closest_y ← (byte) 0
Adding struct value member variable copy (byte) getCharToProcess::closest_dist ← (const byte) NOT_FOUND
Adding struct value list initializer (byte) getCharToProcess::closest_x ← (byte) getCharToProcess::x
Adding struct value list initializer (byte) getCharToProcess::closest_y ← (byte) getCharToProcess::y
@ -260,7 +260,7 @@ atan2_16::@6: scope:[atan2_16] from atan2_16::@4 atan2_16::@5
(signed word) atan2_16::yi#9 ← phi( atan2_16::@4/(signed word) atan2_16::yi#12 atan2_16::@5/(signed word) atan2_16::yi#13 )
(signed word~) atan2_16::$9 ← phi( atan2_16::@4/(signed word~) atan2_16::$8 atan2_16::@5/(signed word~) atan2_16::$7 )
(signed word) atan2_16::xi#0 ← (signed word~) atan2_16::$9
(word) atan2_16::angle#0 ← (number) 0
(word) atan2_16::angle#0 ← (word) 0
(byte) atan2_16::i#0 ← (byte) 0
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@27 atan2_16::@6
@ -583,8 +583,8 @@ main::@return: scope:[main] from main::@15
getCharToProcess: scope:[getCharToProcess] from main::@9
(byte*) SCREEN_DIST#2 ← phi( main::@9/(byte*) SCREEN_DIST#4 )
(byte*) SCREEN_COPY#2 ← phi( main::@9/(byte*) SCREEN_COPY#5 )
(byte) getCharToProcess::closest_x#0 ← (byte)(number) 0
(byte) getCharToProcess::closest_y#0 ← (byte)(number) 0
(byte) getCharToProcess::closest_x#0 ← (byte) 0
(byte) getCharToProcess::closest_y#0 ← (byte) 0
(byte) getCharToProcess::closest_dist#0 ← (const byte) NOT_FOUND
(byte*) getCharToProcess::screen_line#0 ← (byte*) SCREEN_COPY#2
(byte*) getCharToProcess::dist_line#0 ← (byte*) SCREEN_DIST#2
@ -709,7 +709,7 @@ getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@1
startProcessing: scope:[startProcessing] from main::@10
(byte) startProcessing::center_x#9 ← phi( main::@10/(byte) startProcessing::center_x#0 )
(byte) startProcessing::center_y#9 ← phi( main::@10/(byte) startProcessing::center_y#0 )
(byte) startProcessing::freeIdx#0 ← (number) $ff
(byte) startProcessing::freeIdx#0 ← (byte) $ff
to:startProcessing::@1
startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@4
(byte) startProcessing::center_x#8 ← phi( startProcessing/(byte) startProcessing::center_x#9 startProcessing::@4/(byte) startProcessing::center_x#3 )
@ -841,7 +841,7 @@ startProcessing::@return: scope:[startProcessing] from startProcessing::@10
(void()) processChars()
processChars: scope:[processChars] from irqBottom::@1
(byte) processChars::numActive#0 ← (number) 0
(byte) processChars::numActive#0 ← (byte) 0
(byte) processChars::i#0 ← (byte) 0
to:processChars::@2
processChars::@2: scope:[processChars] from processChars processChars::@3
@ -1023,8 +1023,8 @@ init_angle_screen::@1: scope:[init_angle_screen] from init_angle_screen init_an
(byte*) init_angle_screen::screen_bottomline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_bottomline#1 )
(byte*) init_angle_screen::screen_topline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_topline#1 )
(byte) init_angle_screen::y#5 ← phi( init_angle_screen/(byte) init_angle_screen::y#0 init_angle_screen::@4/(byte) init_angle_screen::y#1 )
(byte) init_angle_screen::x#0 ← (number) 0
(byte) init_angle_screen::xb#0 ← (number) $27
(byte) init_angle_screen::x#0 ← (byte) 0
(byte) init_angle_screen::xb#0 ← (byte) $27
to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen] from init_angle_screen::@1 init_angle_screen::@9
(byte) init_angle_screen::xb#4 ← phi( init_angle_screen::@1/(byte) init_angle_screen::xb#0 init_angle_screen::@9/(byte) init_angle_screen::xb#1 )
@ -1254,29 +1254,29 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*)(number) $d021
(const byte) BLUE = (number) 6
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte) BORDER_XPOS_LEFT = (number) $18
(const word) BORDER_XPOS_RIGHT = (number) $158
(const byte) BORDER_YPOS_BOTTOM = (number) $fa
(const byte) BORDER_YPOS_TOP = (number) $32
(const byte) BORDER_XPOS_LEFT = (byte) $18
(const word) BORDER_XPOS_RIGHT = (word) $158
(const byte) BORDER_YPOS_BOTTOM = (byte) $fa
(const byte) BORDER_YPOS_TOP = (byte) $32
(const byte*) CHARGEN = (byte*)(number) $d000
(const byte*) CIA1_INTERRUPT = (byte*)(number) $dc0d
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const byte*) COLS = (byte*)(number) $d800
(const word*) CORDIC_ATAN2_ANGLES_16[(const byte) CORDIC_ITERATIONS_16] = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
(const byte) CORDIC_ITERATIONS_16 = (number) $f
(const byte) CORDIC_ITERATIONS_16 = (byte) $f
(const bool) DEBUG = false
(const void()**) HARDWARE_IRQ = (void()**)(number) $fffe
(const byte*) HEAP_TOP = (byte*)(number) $a000
(const byte*) IRQ_ENABLE = (byte*)(number) $d01a
(const byte) IRQ_RASTER = (number) 1
(const byte) IRQ_RASTER = (byte) 1
(const byte*) IRQ_STATUS = (byte*)(number) $d019
(const byte) LIGHT_BLUE = (number) $e
(const byte) NOT_FOUND = (number) $ff
(const byte) NUM_PROCESSING = (number) 8
(const byte) LIGHT_BLUE = (byte) $e
(const byte) NOT_FOUND = (byte) $ff
(const byte) NUM_PROCESSING = (byte) 8
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL = (byte) $a
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9
@ -1289,9 +1289,9 @@ SYMBOL TABLE SSA
(const struct ProcessingSprite*) PROCESSING[(const byte) NUM_PROCESSING] = { fill( NUM_PROCESSING, 0) }
(const byte*) PROCPORT = (byte*)(number) 1
(const byte*) PROCPORT_DDR = (byte*)(number) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(byte) ProcessingChar::dist
(byte) ProcessingChar::x
(byte) ProcessingChar::y
@ -1312,8 +1312,8 @@ SYMBOL TABLE SSA
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*)(number) $d012
(const byte) RASTER_IRQ_MIDDLE = (number) $ff
(const byte) RASTER_IRQ_TOP = (number) $30
(const byte) RASTER_IRQ_MIDDLE = (byte) $ff
(const byte) RASTER_IRQ_TOP = (byte) $30
(const byte*) SCREEN = (byte*)(number) $400
(byte*) SCREEN_COPY
(byte*) SCREEN_COPY#0
@ -1369,7 +1369,7 @@ SYMBOL TABLE SSA
(const byte*) SPRITES_XPOS = (byte*)(number) $d000
(const byte*) SPRITES_YPOS = (byte*)(number) $d001
(const byte*) SPRITE_DATA = (byte*)(number) $2000
(const word) SPRITE_PTRS = (number) $3f8
(const word) SPRITE_PTRS = (word) $3f8
(const byte) STATUS_FREE = (byte) 0
(const byte) STATUS_NEW = (byte) 1
(const byte) STATUS_PROCESSING = (byte) 2
@ -1382,7 +1382,7 @@ SYMBOL TABLE SSA
.word -sin(toRadians([i*360]/25))*4
}
}}
(const byte) WHITE = (number) 1
(const byte) WHITE = (byte) 1
(const word) XPOS_LEFTMOST = (word)(const byte) BORDER_XPOS_LEFT-(number) 8<<(number) 4
(const word) XPOS_RIGHTMOST = (word)(const word) BORDER_XPOS_RIGHT<<(number) 4
(const word) YPOS_BOTTOMMOST = (word)(const byte) BORDER_YPOS_BOTTOM<<(number) 4
@ -2194,7 +2194,6 @@ Adding number conversion cast (unumber) 8 in
Adding number conversion cast (unumber) 4 in
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$0 ← (signed word) atan2_16::y#1 >= (number) 0
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$5 ← (signed word) atan2_16::x#1 >= (number) 0
Adding number conversion cast (unumber) 0 in (word) atan2_16::angle#0 ← (number) 0
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (number) 0
Adding number conversion cast (unumber) 2 in (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 / (number) 2
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (number) 0
@ -2227,7 +2226,6 @@ Adding number conversion cast (unumber) $28 in (byte*) getCharToProcess::screen_
Adding number conversion cast (unumber) $28 in (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#3 + (number) $28
Adding number conversion cast (unumber) $28 in (number~) getCharToProcess::$9 ← (word~) getCharToProcess::$8 * (number) $28
Adding number conversion cast (unumber) getCharToProcess::$9 in (number~) getCharToProcess::$9 ← (word~) getCharToProcess::$8 * (unumber)(number) $28
Adding number conversion cast (unumber) $ff in (byte) startProcessing::freeIdx#0 ← (number) $ff
Adding number conversion cast (unumber) 1 in (byte) startProcessing::i#1 ← (byte) startProcessing::i#3 + rangenext(0,NUM_PROCESSING-1)
Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$25 ← (byte) startProcessing::freeIdx#2 == (number) $ff
Adding number conversion cast (unumber) $28 in (number~) startProcessing::$1 ← (word~) startProcessing::$0 * (number) $28
@ -2252,7 +2250,6 @@ Adding number conversion cast (unumber) $40 in (byte~) startProcessing::$19 ←
Adding number conversion cast (unumber) 8 in (number~) startProcessing::$20 ← (byte) startProcessing::spriteIdx#1 * (number) 8
Adding number conversion cast (unumber) startProcessing::$20 in (number~) startProcessing::$20 ← (byte) startProcessing::spriteIdx#1 * (unumber)(number) 8
Adding number conversion cast (unumber) $3c in *((word*~) startProcessing::$32 + (byte~) startProcessing::$28) ← (number) $3c
Adding number conversion cast (unumber) 0 in (byte) processChars::numActive#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (number~) processChars::$2 ← (number) 1 << *((byte*~) processChars::$35)
Adding number conversion cast (unumber) processChars::$2 in (number~) processChars::$2 ← (unumber)(number) 1 << *((byte*~) processChars::$35)
Adding number conversion cast (unumber) 1 in (byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,NUM_PROCESSING-1)
@ -2280,8 +2277,6 @@ Adding number conversion cast (unumber) 8 in (unumber~) processChars::$28 ← (b
Adding number conversion cast (unumber) $3e7 in *((const byte*) SCREEN+(number) $3e7) ← (byte~) processChars::$31
Adding number conversion cast (unumber) $28*$c in (byte*~) init_angle_screen::$0 ← (byte*) init_angle_screen::screen#1 + (number) $28*(number) $c
Adding number conversion cast (unumber) $28*$c in (byte*~) init_angle_screen::$1 ← (byte*) init_angle_screen::screen#1 + (number) $28*(number) $c
Adding number conversion cast (unumber) 0 in (byte) init_angle_screen::x#0 ← (number) 0
Adding number conversion cast (unumber) $27 in (byte) init_angle_screen::xb#0 ← (number) $27
Adding number conversion cast (unumber) $13 in (bool~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 <= (number) $13
Adding number conversion cast (unumber) 2 in (number~) init_angle_screen::$3 ← (byte) init_angle_screen::x#3 * (number) 2
Adding number conversion cast (unumber) init_angle_screen::$3 in (number~) init_angle_screen::$3 ← (byte) init_angle_screen::x#3 * (unumber)(number) 2
@ -2309,7 +2304,6 @@ Adding number conversion cast (unumber) $7f in *((const byte*) VIC_CONTROL) ←
Adding number conversion cast (unumber) $80 in *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (number) $80
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (void*) malloc::return#0 ← (void*)(byte*) malloc::mem#0
Inlining cast (word) atan2_16::angle#0 ← (unumber)(number) 0
Inlining cast (word) malloc::size#0 ← (unumber)(number) $3e8
Inlining cast (byte*) SCREEN_COPY#0 ← (byte*)(void*~) $0
Inlining cast (word) malloc::size#1 ← (unumber)(number) $3e8
@ -2323,7 +2317,6 @@ Inlining cast *((byte*~) main::$16 + (byte~) main::$10) ← (unumber)(number) 0
Inlining cast *((byte*~) main::$17 + (byte~) main::$10) ← (unumber)(number) 0
Inlining cast *((byte**~) main::$19 + (byte~) main::$10) ← (byte*)(number) 0
Inlining cast (word~) getCharToProcess::$8 ← (word)(byte) getCharToProcess::closest_y#3
Inlining cast (byte) startProcessing::freeIdx#0 ← (unumber)(number) $ff
Inlining cast (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#1
Inlining cast (word~) startProcessing::$5 ← (word)(byte) startProcessing::spriteIdx#0
Inlining cast (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0
@ -2331,13 +2324,10 @@ Inlining cast (word~) startProcessing::$11 ← (word)(byte) startProcessing::cen
Inlining cast (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#2
Inlining cast (word~) startProcessing::$21 ← (word)(unumber~) startProcessing::$20
Inlining cast *((word*~) startProcessing::$32 + (byte~) startProcessing::$28) ← (unumber)(number) $3c
Inlining cast (byte) processChars::numActive#0 ← (unumber)(number) 0
Inlining cast (byte~) processChars::$12 ← (byte)(word) processChars::xpos#1
Inlining cast (byte~) processChars::$14 ← (byte)(word~) processChars::$13
Inlining cast (byte~) processChars::$24 ← (byte)(unumber~) processChars::$23
Inlining cast (byte~) processChars::$27 ← (byte)(unumber~) processChars::$26
Inlining cast (byte) init_angle_screen::x#0 ← (unumber)(number) 0
Inlining cast (byte) init_angle_screen::xb#0 ← (unumber)(number) $27
Inlining cast (signed word~) init_angle_screen::$6 ← (signed word)(word~) init_angle_screen::$5
Inlining cast (signed word~) init_angle_screen::$9 ← (signed word)(word~) init_angle_screen::$8
Inlining cast *((byte*) initSprites::sp#3) ← (unumber)(number) 0
@ -2378,7 +2368,6 @@ Simplifying constant pointer cast (byte*) 40960
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 2
@ -2406,12 +2395,9 @@ Simplifying constant pointer cast (byte*) 0
Simplifying constant integer cast 1
Simplifying constant integer cast $3e7
Simplifying constant integer cast $3e7
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $ff
Simplifying constant integer cast 1
Simplifying constant integer cast $ff
Simplifying constant integer cast $28
@ -2425,7 +2411,6 @@ Simplifying constant integer cast 4
Simplifying constant integer cast $40
Simplifying constant integer cast 8
Simplifying constant integer cast $3c
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 4
@ -2442,8 +2427,6 @@ Simplifying constant integer cast 8
Simplifying constant integer cast (const byte) BORDER_YPOS_TOP/(unumber)(number) 8
Simplifying constant integer cast 8
Simplifying constant integer cast $3e7
Simplifying constant integer cast 0
Simplifying constant integer cast $27
Simplifying constant integer cast $13
Simplifying constant integer cast 2
Simplifying constant integer cast $27
@ -2473,7 +2456,6 @@ Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 0
@ -2504,7 +2486,6 @@ Finalized unsigned number type (word) $3e7
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) $28
@ -2518,7 +2499,6 @@ Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) $3c
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 4
@ -2533,8 +2513,6 @@ Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (word) $3e7
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $27
@ -3194,7 +3172,7 @@ Constant inlined init_angle_screen::x#0 = (byte) 0
Constant inlined main::$14 = (word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
Constant inlined main::src#0 = (const byte*) SCREEN
Constant inlined main::$15 = (byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
Constant inlined atan2_16::angle#0 = (byte) 0
Constant inlined atan2_16::angle#0 = (word) 0
Constant inlined getCharToProcess::x#0 = (byte) 0
Constant inlined initSprites::sp#0 = (const byte*) SPRITE_DATA
Constant inlined main::$11 = (word*)(const struct ProcessingSprite*) PROCESSING
@ -3837,7 +3815,7 @@ atan2_16::@6: scope:[atan2_16] from atan2_16::@4 atan2_16::@5
[205] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 )
to:atan2_16::@10
atan2_16::@10: scope:[atan2_16] from atan2_16::@19 atan2_16::@6
[206] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(byte) 0 )
[206] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(word) 0 )
[206] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 )
[206] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 )
[206] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 )
@ -6198,7 +6176,7 @@ atan2_16: {
__b6:
// [206] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
__b10_from___b6:
// [206] phi (word) atan2_16::angle#12 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vbuc1
// [206] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1
lda #<0
sta.z angle_1
lda #>0
@ -9068,7 +9046,7 @@ atan2_16: {
__b6:
// [206] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
__b10_from___b6:
// [206] phi (word) atan2_16::angle#12 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vbuc1
// [206] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1
lda #<0
sta.z angle
lda #>0
@ -10088,26 +10066,26 @@ FINAL SYMBOL TABLE
(label) @4
(label) @begin
(label) @end
(const byte) BORDER_XPOS_LEFT = (number) $18
(const word) BORDER_XPOS_RIGHT = (number) $158
(const byte) BORDER_YPOS_BOTTOM = (number) $fa
(const byte) BORDER_YPOS_TOP = (number) $32
(const byte) BORDER_XPOS_LEFT = (byte) $18
(const word) BORDER_XPOS_RIGHT = (word) $158
(const byte) BORDER_YPOS_BOTTOM = (byte) $fa
(const byte) BORDER_YPOS_TOP = (byte) $32
(const byte*) CHARGEN = (byte*) 53248
(const byte*) CIA1_INTERRUPT = (byte*) 56333
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const byte*) COLS = (byte*) 55296
(const word*) CORDIC_ATAN2_ANGLES_16[(const byte) CORDIC_ITERATIONS_16] = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
(const byte) CORDIC_ITERATIONS_16 = (number) $f
(const byte) CORDIC_ITERATIONS_16 = (byte) $f
(const void()**) HARDWARE_IRQ = (void()**) 65534
(const byte*) HEAP_TOP = (byte*) 40960
(const byte*) IRQ_ENABLE = (byte*) 53274
(const byte) IRQ_RASTER = (number) 1
(const byte) IRQ_RASTER = (byte) 1
(const byte*) IRQ_STATUS = (byte*) 53273
(const byte) LIGHT_BLUE = (number) $e
(const byte) NOT_FOUND = (number) $ff
(const byte) NUM_PROCESSING = (number) 8
(const byte) LIGHT_BLUE = (byte) $e
(const byte) NOT_FOUND = (byte) $ff
(const byte) NUM_PROCESSING = (byte) 8
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL = (byte) $a
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9
@ -10119,9 +10097,9 @@ FINAL SYMBOL TABLE
(const struct ProcessingSprite*) PROCESSING[(const byte) NUM_PROCESSING] = { fill( NUM_PROCESSING, 0) }
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(byte) ProcessingChar::dist
(byte) ProcessingChar::x
(byte) ProcessingChar::y
@ -10139,8 +10117,8 @@ FINAL SYMBOL TABLE
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte) RASTER_IRQ_MIDDLE = (number) $ff
(const byte) RASTER_IRQ_TOP = (number) $30
(const byte) RASTER_IRQ_MIDDLE = (byte) $ff
(const byte) RASTER_IRQ_TOP = (byte) $30
(const byte*) SCREEN = (byte*) 1024
(byte*) SCREEN_COPY
(void*) SCREEN_COPY#0 SCREEN_COPY zp[2]:7 0.0273972602739726
@ -10155,7 +10133,7 @@ FINAL SYMBOL TABLE
(const byte*) SPRITES_XPOS = (byte*) 53248
(const byte*) SPRITES_YPOS = (byte*) 53249
(const byte*) SPRITE_DATA = (byte*) 8192
(const word) SPRITE_PTRS = (number) $3f8
(const word) SPRITE_PTRS = (word) $3f8
(const byte) STATUS_FREE = (byte) 0
(const byte) STATUS_NEW = (byte) 1
(const byte) STATUS_PROCESSING = (byte) 2
@ -11893,7 +11871,7 @@ atan2_16: {
// atan2_16::@6
__b6:
// [206] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
// [206] phi (word) atan2_16::angle#12 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vbuc1
// [206] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1
lda #<0
sta.z angle
sta.z angle+1

View File

@ -4,26 +4,26 @@
(label) @4
(label) @begin
(label) @end
(const byte) BORDER_XPOS_LEFT = (number) $18
(const word) BORDER_XPOS_RIGHT = (number) $158
(const byte) BORDER_YPOS_BOTTOM = (number) $fa
(const byte) BORDER_YPOS_TOP = (number) $32
(const byte) BORDER_XPOS_LEFT = (byte) $18
(const word) BORDER_XPOS_RIGHT = (word) $158
(const byte) BORDER_YPOS_BOTTOM = (byte) $fa
(const byte) BORDER_YPOS_TOP = (byte) $32
(const byte*) CHARGEN = (byte*) 53248
(const byte*) CIA1_INTERRUPT = (byte*) 56333
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const byte*) COLS = (byte*) 55296
(const word*) CORDIC_ATAN2_ANGLES_16[(const byte) CORDIC_ITERATIONS_16] = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
(const byte) CORDIC_ITERATIONS_16 = (number) $f
(const byte) CORDIC_ITERATIONS_16 = (byte) $f
(const void()**) HARDWARE_IRQ = (void()**) 65534
(const byte*) HEAP_TOP = (byte*) 40960
(const byte*) IRQ_ENABLE = (byte*) 53274
(const byte) IRQ_RASTER = (number) 1
(const byte) IRQ_RASTER = (byte) 1
(const byte*) IRQ_STATUS = (byte*) 53273
(const byte) LIGHT_BLUE = (number) $e
(const byte) NOT_FOUND = (number) $ff
(const byte) NUM_PROCESSING = (number) 8
(const byte) LIGHT_BLUE = (byte) $e
(const byte) NOT_FOUND = (byte) $ff
(const byte) NUM_PROCESSING = (byte) 8
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL = (byte) $a
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9
@ -35,9 +35,9 @@
(const struct ProcessingSprite*) PROCESSING[(const byte) NUM_PROCESSING] = { fill( NUM_PROCESSING, 0) }
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_CHARROM = (number) 1
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_CHARROM = (byte) 1
(const byte) PROCPORT_RAM_IO = (byte) 5
(byte) ProcessingChar::dist
(byte) ProcessingChar::x
(byte) ProcessingChar::y
@ -55,8 +55,8 @@
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte) RASTER_IRQ_MIDDLE = (number) $ff
(const byte) RASTER_IRQ_TOP = (number) $30
(const byte) RASTER_IRQ_MIDDLE = (byte) $ff
(const byte) RASTER_IRQ_TOP = (byte) $30
(const byte*) SCREEN = (byte*) 1024
(byte*) SCREEN_COPY
(void*) SCREEN_COPY#0 SCREEN_COPY zp[2]:7 0.0273972602739726
@ -71,7 +71,7 @@
(const byte*) SPRITES_XPOS = (byte*) 53248
(const byte*) SPRITES_YPOS = (byte*) 53249
(const byte*) SPRITE_DATA = (byte*) 8192
(const word) SPRITE_PTRS = (number) $3f8
(const word) SPRITE_PTRS = (word) $3f8
(const byte) STATUS_FREE = (byte) 0
(const byte) STATUS_NEW = (byte) 1
(const byte) STATUS_PROCESSING = (byte) 2

View File

@ -103,7 +103,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*)(number) $d021
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) COLS = (byte*)(number) $d800
(const byte*) MEDUSA_COLORS[] = kickasm {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE)
.fill fileCols.getSize(), fileCols.get(i)
@ -710,7 +710,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) COLS = (byte*) 55296
(const byte*) MEDUSA_COLORS[] = kickasm {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE)
.fill fileCols.getSize(), fileCols.get(i)

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) COLS = (byte*) 55296
(const byte*) MEDUSA_COLORS[] = kickasm {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE)
.fill fileCols.getSize(), fileCols.get(i)

View File

@ -451,7 +451,7 @@ mulf_init: scope:[mulf_init] from main
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
[210] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
[210] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
[210] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[210] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[210] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
[210] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
[211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2

View File

@ -252,9 +252,9 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
(void()) mulf_init()
mulf_init: scope:[mulf_init] from main
(word) mulf_init::sqr#0 ← (number) 0
(byte) mulf_init::x_2#0 ← (number) 0
(byte) mulf_init::c#0 ← (number) 0
(word) mulf_init::sqr#0 ← (word) 0
(byte) mulf_init::x_2#0 ← (byte) 0
(byte) mulf_init::c#0 ← (byte) 0
(byte*) mulf_init::sqr1_hi#0 ← (const byte*) mulf_sqr1_hi+(number) 1
(byte*) mulf_init::sqr1_lo#0 ← (const byte*) mulf_sqr1_lo+(number) 1
to:mulf_init::@1
@ -281,7 +281,7 @@ mulf_init::@2: scope:[mulf_init] from mulf_init::@1
to:mulf_init::@7
mulf_init::@3: scope:[mulf_init] from mulf_init::@1
(byte) mulf_init::x_255#0 ← (byte)(number) -1
(byte) mulf_init::dir#0 ← (number) $ff
(byte) mulf_init::dir#0 ← (byte) $ff
(byte*) mulf_init::sqr2_hi#0 ← (const byte*) mulf_sqr2_hi
(byte*) mulf_init::sqr2_lo#0 ← (const byte*) mulf_sqr2_lo
to:mulf_init::@9
@ -475,8 +475,8 @@ main::@30: scope:[main] from main::@24
(byte) progress_idx#52 ← phi( main::@24/(byte) progress_idx#54 )
(byte*) progress_cursor#52 ← phi( main::@24/(byte*) progress_cursor#54 )
(byte**) renderBobCleanupNext#28 ← phi( main::@24/(byte**) renderBobCleanupNext#31 )
(signed word) main::origX#0 ← (number) $a00
(signed word) main::rowOffsetY#0 ← (number) $100
(signed word) main::origX#0 ← (signed word) $a00
(signed word) main::rowOffsetY#0 ← (signed word) $100
to:main::@1
main::@1: scope:[main] from main::@30 main::@33
(byte) bob_charset_next_id#58 ← phi( main::@30/(byte) bob_charset_next_id#60 main::@33/(byte) bob_charset_next_id#59 )
@ -858,8 +858,8 @@ prepareBobs::@20: scope:[prepareBobs] from prepareBobs::@19
(byte*) progress_cursor#30 ← phi( prepareBobs::@19/(byte*) progress_cursor#2 )
(byte) bob_charset_next_id#12 ← phi( prepareBobs::@19/(byte) bob_charset_next_id#7 )
(byte) bob_charset_next_id#3 ← (byte) bob_charset_next_id#12
(byte) prepareBobs::bob_table_idx#0 ← (number) 0
(byte) prepareBobs::shift_y#0 ← (number) 0
(byte) prepareBobs::bob_table_idx#0 ← (byte) 0
(byte) prepareBobs::shift_y#0 ← (byte) 0
to:prepareBobs::@1
prepareBobs::@1: scope:[prepareBobs] from prepareBobs::@20 prepareBobs::@21
(byte) prepareBobs::bob_table_idx#9 ← phi( prepareBobs::@20/(byte) prepareBobs::bob_table_idx#0 prepareBobs::@21/(byte) prepareBobs::bob_table_idx#12 )
@ -876,7 +876,7 @@ prepareBobs::@2: scope:[prepareBobs] from prepareBobs::@1
(byte) bob_charset_next_id#48 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#22 )
(byte) prepareBobs::shift_y#6 ← phi( prepareBobs::@1/(byte) prepareBobs::shift_y#2 )
(byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#9 )
(byte) prepareBobs::shift_x#0 ← (number) 0
(byte) prepareBobs::shift_x#0 ← (byte) 0
to:prepareBobs::@4
prepareBobs::@4: scope:[prepareBobs] from prepareBobs::@2 prepareBobs::@25
(byte) progress_idx#37 ← phi( prepareBobs::@2/(byte) progress_idx#40 prepareBobs::@25/(byte) progress_idx#41 )
@ -898,7 +898,7 @@ prepareBobs::@5: scope:[prepareBobs] from prepareBobs::@4
(byte*) prepareBobs::bob_glyph#0 ← (const byte*) PROTO_BOB
(byte*~) prepareBobs::$4 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#2
(byte*) prepareBobs::bob_table#0 ← (byte*~) prepareBobs::$4
(byte) prepareBobs::cell#0 ← (number) 0
(byte) prepareBobs::cell#0 ← (byte) 0
to:prepareBobs::@7
prepareBobs::@6: scope:[prepareBobs] from prepareBobs::@4
(byte) prepareBobs::bob_table_idx#14 ← phi( prepareBobs::@4/(byte) prepareBobs::bob_table_idx#4 )
@ -1016,9 +1016,9 @@ prepareBobs::@return: scope:[prepareBobs] from prepareBobs::@1
(void()) protoBobShiftRight()
protoBobShiftRight: scope:[protoBobShiftRight] from prepareBobs::@24 prepareBobs::@9
(byte) protoBobShiftRight::carry#0 ← (number) 0
(byte) protoBobShiftRight::j#0 ← (number) 0
(byte) protoBobShiftRight::i#0 ← (number) 0
(byte) protoBobShiftRight::carry#0 ← (byte) 0
(byte) protoBobShiftRight::j#0 ← (byte) 0
(byte) protoBobShiftRight::i#0 ← (byte) 0
to:protoBobShiftRight::@1
protoBobShiftRight::@1: scope:[protoBobShiftRight] from protoBobShiftRight protoBobShiftRight::@8
(byte) protoBobShiftRight::carry#6 ← phi( protoBobShiftRight/(byte) protoBobShiftRight::carry#0 protoBobShiftRight::@8/(byte) protoBobShiftRight::carry#7 )
@ -1084,7 +1084,7 @@ protoBobShiftRight::@return: scope:[protoBobShiftRight] from protoBobShiftRight
(void()) protoBobShiftDown()
protoBobShiftDown: scope:[protoBobShiftDown] from prepareBobs::@6
(byte) protoBobShiftDown::i#0 ← (number) $17
(byte) protoBobShiftDown::i#0 ← (byte) $17
to:protoBobShiftDown::@1
protoBobShiftDown::@1: scope:[protoBobShiftDown] from protoBobShiftDown protoBobShiftDown::@2
(byte) protoBobShiftDown::i#2 ← phi( protoBobShiftDown/(byte) protoBobShiftDown::i#0 protoBobShiftDown::@2/(byte) protoBobShiftDown::i#1 )
@ -1117,7 +1117,7 @@ charsetFindOrAddGlyph: scope:[charsetFindOrAddGlyph] from prepareBobs::@19 prep
(byte) bob_charset_next_id#23 ← phi( prepareBobs::@19/(byte) bob_charset_next_id#2 prepareBobs::@8/(byte) bob_charset_next_id#21 )
(byte*) charsetFindOrAddGlyph::charset#2 ← phi( prepareBobs::@19/(byte*) charsetFindOrAddGlyph::charset#0 prepareBobs::@8/(byte*) charsetFindOrAddGlyph::charset#1 )
(byte*) charsetFindOrAddGlyph::glyph_cursor#0 ← (byte*) charsetFindOrAddGlyph::charset#2
(byte) charsetFindOrAddGlyph::glyph_id#0 ← (number) 0
(byte) charsetFindOrAddGlyph::glyph_id#0 ← (byte) 0
to:charsetFindOrAddGlyph::@1
charsetFindOrAddGlyph::@1: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph charsetFindOrAddGlyph::@16
(byte*) charsetFindOrAddGlyph::glyph#9 ← phi( charsetFindOrAddGlyph/(byte*) charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::@16/(byte*) charsetFindOrAddGlyph::glyph#11 )
@ -1132,15 +1132,15 @@ charsetFindOrAddGlyph::@2: scope:[charsetFindOrAddGlyph] from charsetFindOrAddG
(byte) charsetFindOrAddGlyph::glyph_id#12 ← phi( charsetFindOrAddGlyph::@1/(byte) charsetFindOrAddGlyph::glyph_id#2 )
(byte*) charsetFindOrAddGlyph::glyph#6 ← phi( charsetFindOrAddGlyph::@1/(byte*) charsetFindOrAddGlyph::glyph#9 )
(byte*) charsetFindOrAddGlyph::glyph_cursor#8 ← phi( charsetFindOrAddGlyph::@1/(byte*) charsetFindOrAddGlyph::glyph_cursor#12 )
(byte) charsetFindOrAddGlyph::found#0 ← (number) 1
(byte) charsetFindOrAddGlyph::i#0 ← (number) 0
(byte) charsetFindOrAddGlyph::found#0 ← (byte) 1
(byte) charsetFindOrAddGlyph::i#0 ← (byte) 0
to:charsetFindOrAddGlyph::@4
charsetFindOrAddGlyph::@3: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@1
(byte) charsetFindOrAddGlyph::glyph_id#11 ← phi( charsetFindOrAddGlyph::@1/(byte) charsetFindOrAddGlyph::glyph_id#2 )
(byte) bob_charset_next_id#34 ← phi( charsetFindOrAddGlyph::@1/(byte) bob_charset_next_id#15 )
(byte*) charsetFindOrAddGlyph::glyph_cursor#11 ← phi( charsetFindOrAddGlyph::@1/(byte*) charsetFindOrAddGlyph::glyph_cursor#12 )
(byte*) charsetFindOrAddGlyph::glyph#8 ← phi( charsetFindOrAddGlyph::@1/(byte*) charsetFindOrAddGlyph::glyph#9 )
(byte) charsetFindOrAddGlyph::i1#0 ← (number) 0
(byte) charsetFindOrAddGlyph::i1#0 ← (byte) 0
to:charsetFindOrAddGlyph::@20
charsetFindOrAddGlyph::@4: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@2 charsetFindOrAddGlyph::@7
(byte) bob_charset_next_id#41 ← phi( charsetFindOrAddGlyph::@2/(byte) bob_charset_next_id#44 charsetFindOrAddGlyph::@7/(byte) bob_charset_next_id#45 )
@ -1312,8 +1312,8 @@ SYMBOL TABLE SSA
(const byte*) BASIC_SCREEN = (byte*)(number) $400
(const byte*) BOB_CHARSET = (byte*)(number) $2000
(const byte*) BOB_SCREEN = (byte*)(number) $2800
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SHIFTS_X = (byte) 4
(const byte) BOB_SHIFTS_Y = (byte) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*)(number) $d020
@ -1322,9 +1322,9 @@ SYMBOL TABLE SSA
(const byte*) CIA2_PORT_A = (byte*)(number) $dd00
(const byte*) CIA2_PORT_A_DDR = (byte*)(number) $dd02
(const byte*) D018 = (byte*)(number) $d018
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_SPACE = (byte) $3c
(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $19
(const byte) NUM_BOBS = (byte) $19
(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)
@ -1538,7 +1538,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#6
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@ -1553,7 +1553,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$10
(byte~) main::$11
@ -2106,7 +2106,7 @@ SYMBOL TABLE SSA
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
(const byte*) progress_inc::progress_chars[] = { (byte)(number) $20, (byte)(number) $65, (byte)(number) $74, (byte)(number) $75, (byte)(number) $61, (byte)(number) $f6, (byte)(number) $e7, (byte)(number) $ea, (byte)(number) $e0 }
(const byte*) progress_inc::progress_chars[] = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
@ -2293,16 +2293,12 @@ Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memse
Adding number conversion cast (unumber) 7 in (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#2 & (number) 7
Adding number conversion cast (unumber) keyboard_key_pressed::$0 in (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#2 & (unumber)(number) 7
Adding number conversion cast (unumber) 3 in (byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key#2 >> (number) 3
Adding number conversion cast (unumber) 0 in (word) mulf_init::sqr#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mulf_init::x_2#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mulf_init::c#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte*) mulf_init::sqr1_hi#0 ← (const byte*) mulf_sqr1_hi+(number) 1
Adding number conversion cast (unumber) 1 in (byte*) mulf_init::sqr1_lo#0 ← (const byte*) mulf_sqr1_lo+(number) 1
Adding number conversion cast (unumber) $200 in (bool~) mulf_init::$0 ← (byte*) mulf_init::sqr1_lo#2 != (const byte*) mulf_sqr1_lo+(number) $200
Adding number conversion cast (unumber) 1 in (number~) mulf_init::$1 ← (byte) mulf_init::c#1 & (number) 1
Adding number conversion cast (unumber) mulf_init::$1 in (number~) mulf_init::$1 ← (byte) mulf_init::c#1 & (unumber)(number) 1
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$2 ← (unumber~) mulf_init::$1 == (number) 0
Adding number conversion cast (unumber) $ff in (byte) mulf_init::dir#0 ← (number) $ff
Adding number conversion cast (unumber) $1ff in (bool~) mulf_init::$7 ← (byte*) mulf_init::sqr2_lo#2 != (const byte*) mulf_sqr2_lo+(number) $1ff
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$9 ← (byte) mulf_init::x_255#1 == (number) 0
Adding number conversion cast (unumber) $100 in *((const byte*) mulf_sqr2_lo+(number) $1ff) ← *((const byte*) mulf_sqr1_lo+(number) $100)
@ -2327,8 +2323,6 @@ Adding number conversion cast (unumber) main::toD0181_$7 in (number~) main::toD0
Adding number conversion cast (unumber) main::toD0181_$8 in (number~) main::toD0181_$8 ← (unumber~) main::toD0181_$3 | (unumber~) main::toD0181_$7
Adding number conversion cast (unumber) 0 in (byte) memset::c#0 ← (number) 0
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Adding number conversion cast (snumber) $a00 in (signed word) main::origX#0 ← (number) $a00
Adding number conversion cast (snumber) $100 in (signed word) main::rowOffsetY#0 ← (number) $100
Adding number conversion cast (unumber) $f8 in (bool~) main::$8 ← *((const byte*) RASTER) < (number) $f8
Adding number conversion cast (unumber) $f in *((const byte*) BORDERCOL) ← (number) $f
Adding number conversion cast (unumber) 1 in *((const byte*) BORDERCOL) ← (number) 1
@ -2410,15 +2404,8 @@ Adding number conversion cast (unumber) $52 in *((byte*) renderBobCleanup::scree
Adding number conversion cast (unumber) 1 in (byte) renderBobCleanup::i#1 ← (byte) renderBobCleanup::i#2 + rangenext(0,NUM_BOBS-1)
Adding number conversion cast (unumber) 0 in (byte) bob_charset_next_id#2 ← (number) 0
Adding number conversion cast (unumber) $30 in (byte*) charsetFindOrAddGlyph::glyph#0 ← (const byte*) PROTO_BOB+(number) $30
Adding number conversion cast (unumber) 0 in (byte) prepareBobs::bob_table_idx#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) prepareBobs::shift_y#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) prepareBobs::shift_x#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) prepareBobs::cell#0 ← (number) 0
Adding number conversion cast (unumber) 9 in (bool~) prepareBobs::$5 ← (byte) prepareBobs::cell#2 < (number) 9
Adding number conversion cast (unumber) 8 in (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#3 + (number) 8
Adding number conversion cast (unumber) 0 in (byte) protoBobShiftRight::carry#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) protoBobShiftRight::j#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) protoBobShiftRight::i#0 ← (number) 0
Adding number conversion cast (unumber) 3*3*8 in (bool~) protoBobShiftRight::$0 ← (byte) protoBobShiftRight::i#2 < (number) 3*(number) 3*(number) 8
Adding number conversion cast (unumber) 1 in (number~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (number) 1
Adding number conversion cast (unumber) protoBobShiftRight::$1 in (number~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (unumber)(number) 1
@ -2427,7 +2414,6 @@ Adding number conversion cast (unumber) 1 in (byte~) protoBobShiftRight::$5 ←
Adding number conversion cast (unumber) $30 in (bool~) protoBobShiftRight::$7 ← (byte) protoBobShiftRight::j#4 >= (number) $30
Adding number conversion cast (unumber) $2f in (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#5 - (number) $2f
Adding number conversion cast (unumber) $18 in (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#6 + (number) $18
Adding number conversion cast (unumber) $17 in (byte) protoBobShiftDown::i#0 ← (number) $17
Adding number conversion cast (unumber) 0 in (bool~) protoBobShiftDown::$0 ← (byte) protoBobShiftDown::i#2 > (number) 0
Adding number conversion cast (unumber) $17 in *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#3) ← *((const byte*) PROTO_BOB+(number) $17 + (byte) protoBobShiftDown::i#3)
Adding number conversion cast (unumber) $2f in *((const byte*) PROTO_BOB+(number) $18 + (byte) protoBobShiftDown::i#3) ← *((const byte*) PROTO_BOB+(number) $2f + (byte) protoBobShiftDown::i#3)
@ -2440,10 +2426,6 @@ Adding number conversion cast (unumber) 0 in *((const byte*) PROTO_BOB + (number
Adding number conversion cast (unumber) $18 in *((const byte*) PROTO_BOB + (number) $18) ← ((unumber)) (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) PROTO_BOB + (number) $30) ← (number) 0
Adding number conversion cast (unumber) $30 in *((const byte*) PROTO_BOB + (number) $30) ← ((unumber)) (number) 0
Adding number conversion cast (unumber) 0 in (byte) charsetFindOrAddGlyph::glyph_id#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte) charsetFindOrAddGlyph::found#0 ← (number) 1
Adding number conversion cast (unumber) 0 in (byte) charsetFindOrAddGlyph::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) charsetFindOrAddGlyph::i1#0 ← (number) 0
Adding number conversion cast (unumber) 8 in (bool~) charsetFindOrAddGlyph::$1 ← (byte) charsetFindOrAddGlyph::i#2 < (number) 8
Adding number conversion cast (unumber) 0 in (byte) charsetFindOrAddGlyph::found#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) charsetFindOrAddGlyph::$6 ← (number) 0 != (byte) charsetFindOrAddGlyph::found#2
@ -2456,10 +2438,6 @@ Adding number conversion cast (unumber) 0 in (byte) progress_idx#9 ← (number)
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast (word) mulf_init::sqr#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::x_2#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::c#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::dir#0 ← (unumber)(number) $ff
Inlining cast (byte) mulf_init::dir#1 ← (unumber)(number) 1
Inlining cast *((const byte*) CIA2_PORT_A_DDR) ← (unumber)(number) 3
Inlining cast (word~) main::vicSelectGfxBank1_toDd001_$0 ← (word)(byte*) main::vicSelectGfxBank1_toDd001_gfx#1
@ -2467,8 +2445,6 @@ Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1
Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1
Inlining cast (byte) memset::c#0 ← (unumber)(number) 0
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (signed word) main::origX#0 ← (snumber)(number) $a00
Inlining cast (signed word) main::rowOffsetY#0 ← (snumber)(number) $100
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) $f
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 1
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 2
@ -2488,22 +2464,10 @@ Inlining cast *((byte*) renderBobCleanup::screen#0 + (unumber)(number) 2) ← (u
Inlining cast *((byte*) renderBobCleanup::screen#0 + (unumber)(number) $2a) ← (unumber)(number) 0
Inlining cast *((byte*) renderBobCleanup::screen#0 + (unumber)(number) $52) ← (unumber)(number) 0
Inlining cast (byte) bob_charset_next_id#2 ← (unumber)(number) 0
Inlining cast (byte) prepareBobs::bob_table_idx#0 ← (unumber)(number) 0
Inlining cast (byte) prepareBobs::shift_y#0 ← (unumber)(number) 0
Inlining cast (byte) prepareBobs::shift_x#0 ← (unumber)(number) 0
Inlining cast (byte) prepareBobs::cell#0 ← (unumber)(number) 0
Inlining cast (byte) protoBobShiftRight::carry#0 ← (unumber)(number) 0
Inlining cast (byte) protoBobShiftRight::j#0 ← (unumber)(number) 0
Inlining cast (byte) protoBobShiftRight::i#0 ← (unumber)(number) 0
Inlining cast (byte) protoBobShiftDown::i#0 ← (unumber)(number) $17
Inlining cast *((const byte*) PROTO_BOB+(unumber)(number) $30 + (byte) protoBobShiftDown::i#3) ← (unumber)(number) 0
Inlining cast *((const byte*) PROTO_BOB + (unumber)(number) 0) ← (unumber)(number) 0
Inlining cast *((const byte*) PROTO_BOB + (unumber)(number) $18) ← (unumber)(number) 0
Inlining cast *((const byte*) PROTO_BOB + (unumber)(number) $30) ← (unumber)(number) 0
Inlining cast (byte) charsetFindOrAddGlyph::glyph_id#0 ← (unumber)(number) 0
Inlining cast (byte) charsetFindOrAddGlyph::found#0 ← (unumber)(number) 1
Inlining cast (byte) charsetFindOrAddGlyph::i#0 ← (unumber)(number) 0
Inlining cast (byte) charsetFindOrAddGlyph::i1#0 ← (unumber)(number) 0
Inlining cast (byte) charsetFindOrAddGlyph::found#1 ← (unumber)(number) 0
Inlining cast (byte) progress_idx#6 ← (unumber)(number) 0
Inlining cast (byte) progress_idx#9 ← (unumber)(number) 0
@ -2515,48 +2479,19 @@ Simplifying constant pointer cast (byte*) 56320
Simplifying constant pointer cast (byte*) 56321
Simplifying constant pointer cast (byte*) 56576
Simplifying constant pointer cast (byte*) 56578
Simplifying constant integer cast $fe
Simplifying constant integer cast $fd
Simplifying constant integer cast $fb
Simplifying constant integer cast $f7
Simplifying constant integer cast $ef
Simplifying constant integer cast $df
Simplifying constant integer cast $bf
Simplifying constant integer cast $7f
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast 8
Simplifying constant integer cast $10
Simplifying constant integer cast $20
Simplifying constant integer cast $40
Simplifying constant integer cast $80
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 4096
Simplifying constant pointer cast (byte*) 10240
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast $20
Simplifying constant integer cast $65
Simplifying constant integer cast $74
Simplifying constant integer cast $75
Simplifying constant integer cast $61
Simplifying constant integer cast $f6
Simplifying constant integer cast $e7
Simplifying constant integer cast $ea
Simplifying constant integer cast $e0
Simplifying constant integer cast 0
Simplifying constant integer cast 7
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $200
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast -1
Simplifying constant integer cast $ff
Simplifying constant integer cast $1ff
Simplifying constant integer cast 0
Simplifying constant integer cast $100
@ -2573,8 +2508,6 @@ Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast $3e8
Simplifying constant integer cast $a00
Simplifying constant integer cast $100
Simplifying constant integer cast $f8
Simplifying constant integer cast $f
Simplifying constant integer cast 1
@ -2643,22 +2576,14 @@ Simplifying constant integer cast $52
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $30
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 9
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast $30
Simplifying constant integer cast $2f
Simplifying constant integer cast $18
Simplifying constant integer cast $17
Simplifying constant integer cast 0
Simplifying constant integer cast $17
Simplifying constant integer cast $2f
@ -2671,10 +2596,6 @@ Simplifying constant integer cast 0
Simplifying constant integer cast $18
Simplifying constant integer cast 0
Simplifying constant integer cast $30
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
@ -2688,15 +2609,11 @@ Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (word) $200
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (word) $1ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $100
@ -2713,8 +2630,6 @@ Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $3e8
Finalized signed number type (signed word) $a00
Finalized signed number type (signed word) $100
Finalized unsigned number type (byte) $f8
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 1
@ -2774,22 +2689,14 @@ Finalized unsigned number type (byte) $52
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $30
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 9
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $30
Finalized unsigned number type (byte) $2f
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) $17
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $17
Finalized unsigned number type (byte) $2f
@ -2802,10 +2709,6 @@ Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $30
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
@ -3421,7 +3324,7 @@ Constant inlined progress_cursor#16 = (const byte*) BASIC_SCREEN
Constant inlined prepareBobs::bob_glyph#0 = (const byte*) PROTO_BOB
Constant inlined renderBobCleanup::i#0 = (byte) 0
Constant inlined prepareBobs::shift_y#0 = (byte) 0
Constant inlined mulf_init::sqr#0 = (byte) 0
Constant inlined mulf_init::sqr#0 = (word) 0
Constant inlined charsetFindOrAddGlyph::charset#0 = (const byte*) BOB_CHARSET
Constant inlined charsetFindOrAddGlyph::glyph_id#0 = (byte) 0
Constant inlined charsetFindOrAddGlyph::charset#1 = (const byte*) BOB_CHARSET
@ -4160,7 +4063,7 @@ mulf_init: scope:[mulf_init] from main
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
[210] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
[210] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
[210] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[210] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[210] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
[210] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
[211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
@ -6125,7 +6028,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [210] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [210] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
lda #<0
sta.z sqr
lda #>0
@ -8123,7 +8026,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [210] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [210] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
lda #<0
sta.z sqr
lda #>0
@ -8611,8 +8514,8 @@ FINAL SYMBOL TABLE
(const byte*) BASIC_SCREEN = (byte*) 1024
(const byte*) BOB_CHARSET = (byte*) 8192
(const byte*) BOB_SCREEN = (byte*) 10240
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SHIFTS_X = (byte) 4
(const byte) BOB_SHIFTS_Y = (byte) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*) 53280
@ -8621,9 +8524,9 @@ FINAL SYMBOL TABLE
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte*) D018 = (byte*) 53272
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_SPACE = (byte) $3c
(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $19
(const byte) NUM_BOBS = (byte) $19
(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)
@ -10291,7 +10194,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [210] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [210] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
txa
sta.z sqr
sta.z sqr+1

View File

@ -5,8 +5,8 @@
(const byte*) BASIC_SCREEN = (byte*) 1024
(const byte*) BOB_CHARSET = (byte*) 8192
(const byte*) BOB_SCREEN = (byte*) 10240
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SHIFTS_X = (byte) 4
(const byte) BOB_SHIFTS_Y = (byte) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*) 53280
@ -15,9 +15,9 @@
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte*) D018 = (byte*) 53272
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_SPACE = (byte) $3c
(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $19
(const byte) NUM_BOBS = (byte) $19
(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)

View File

@ -522,7 +522,7 @@ mulf_init: scope:[mulf_init] from main
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
[244] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
[244] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
[244] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[244] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[244] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
[244] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
[245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2

View File

@ -252,9 +252,9 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
(void()) mulf_init()
mulf_init: scope:[mulf_init] from main
(word) mulf_init::sqr#0 ← (number) 0
(byte) mulf_init::x_2#0 ← (number) 0
(byte) mulf_init::c#0 ← (number) 0
(word) mulf_init::sqr#0 ← (word) 0
(byte) mulf_init::x_2#0 ← (byte) 0
(byte) mulf_init::c#0 ← (byte) 0
(byte*) mulf_init::sqr1_hi#0 ← (const byte*) mulf_sqr1_hi+(number) 1
(byte*) mulf_init::sqr1_lo#0 ← (const byte*) mulf_sqr1_lo+(number) 1
to:mulf_init::@1
@ -281,7 +281,7 @@ mulf_init::@2: scope:[mulf_init] from mulf_init::@1
to:mulf_init::@7
mulf_init::@3: scope:[mulf_init] from mulf_init::@1
(byte) mulf_init::x_255#0 ← (byte)(number) -1
(byte) mulf_init::dir#0 ← (number) $ff
(byte) mulf_init::dir#0 ← (byte) $ff
(byte*) mulf_init::sqr2_hi#0 ← (const byte*) mulf_sqr2_hi
(byte*) mulf_init::sqr2_lo#0 ← (const byte*) mulf_sqr2_lo
to:mulf_init::@9
@ -583,7 +583,7 @@ main::@28: scope:[main] from main::@22
(byte) progress_idx#52 ← phi( main::@22/(byte) progress_idx#54 )
(byte*) progress_cursor#52 ← phi( main::@22/(byte*) progress_cursor#54 )
(byte**) renderBobCleanupNext#28 ← phi( main::@22/(byte**) renderBobCleanupNext#31 )
(byte) main::angle#0 ← (number) 0
(byte) main::angle#0 ← (byte) 0
to:main::@1
main::@1: scope:[main] from main::@28 main::@33
(byte) bob_charset_next_id#58 ← phi( main::@28/(byte) bob_charset_next_id#60 main::@33/(byte) bob_charset_next_id#59 )
@ -618,7 +618,7 @@ main::@29: scope:[main] from main::@5
(byte) main::angle#2 ← phi( main::@5/(byte) main::angle#4 )
(byte**) renderBobCleanupNext#9 ← phi( main::@5/(byte**) renderBobCleanupNext#7 )
(byte**) renderBobCleanupNext#0 ← (byte**) renderBobCleanupNext#9
(signed byte) main::r#0 ← (number) $1e
(signed byte) main::r#0 ← (signed byte) $1e
(byte) main::a#0 ← (byte) main::angle#2
(byte) main::i#0 ← (byte) 0
to:main::@6
@ -957,8 +957,8 @@ prepareBobs::@20: scope:[prepareBobs] from prepareBobs::@19
(byte*) progress_cursor#30 ← phi( prepareBobs::@19/(byte*) progress_cursor#2 )
(byte) bob_charset_next_id#12 ← phi( prepareBobs::@19/(byte) bob_charset_next_id#7 )
(byte) bob_charset_next_id#3 ← (byte) bob_charset_next_id#12
(byte) prepareBobs::bob_table_idx#0 ← (number) 0
(byte) prepareBobs::shift_y#0 ← (number) 0
(byte) prepareBobs::bob_table_idx#0 ← (byte) 0
(byte) prepareBobs::shift_y#0 ← (byte) 0
to:prepareBobs::@1
prepareBobs::@1: scope:[prepareBobs] from prepareBobs::@20 prepareBobs::@21
(byte) prepareBobs::bob_table_idx#9 ← phi( prepareBobs::@20/(byte) prepareBobs::bob_table_idx#0 prepareBobs::@21/(byte) prepareBobs::bob_table_idx#12 )
@ -975,7 +975,7 @@ prepareBobs::@2: scope:[prepareBobs] from prepareBobs::@1
(byte) bob_charset_next_id#48 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#22 )
(byte) prepareBobs::shift_y#6 ← phi( prepareBobs::@1/(byte) prepareBobs::shift_y#2 )
(byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#9 )
(byte) prepareBobs::shift_x#0 ← (number) 0
(byte) prepareBobs::shift_x#0 ← (byte) 0
to:prepareBobs::@4
prepareBobs::@4: scope:[prepareBobs] from prepareBobs::@2 prepareBobs::@25
(byte) progress_idx#37 ← phi( prepareBobs::@2/(byte) progress_idx#40 prepareBobs::@25/(byte) progress_idx#41 )
@ -997,7 +997,7 @@ prepareBobs::@5: scope:[prepareBobs] from prepareBobs::@4
(byte*) prepareBobs::bob_glyph#0 ← (const byte*) PROTO_BOB
(byte*~) prepareBobs::$4 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#2
(byte*) prepareBobs::bob_table#0 ← (byte*~) prepareBobs::$4
(byte) prepareBobs::cell#0 ← (number) 0
(byte) prepareBobs::cell#0 ← (byte) 0
to:prepareBobs::@7
prepareBobs::@6: scope:[prepareBobs] from prepareBobs::@4
(byte) prepareBobs::bob_table_idx#14 ← phi( prepareBobs::@4/(byte) prepareBobs::bob_table_idx#4 )
@ -1114,9 +1114,9 @@ prepareBobs::@return: scope:[prepareBobs] from prepareBobs::@1
(void()) shiftProtoBobRight()
shiftProtoBobRight: scope:[shiftProtoBobRight] from prepareBobs::@24 prepareBobs::@9
(byte) shiftProtoBobRight::carry#0 ← (number) 0
(byte) shiftProtoBobRight::j#0 ← (number) 0
(byte) shiftProtoBobRight::i#0 ← (number) 0
(byte) shiftProtoBobRight::carry#0 ← (byte) 0
(byte) shiftProtoBobRight::j#0 ← (byte) 0
(byte) shiftProtoBobRight::i#0 ← (byte) 0
to:shiftProtoBobRight::@1
shiftProtoBobRight::@1: scope:[shiftProtoBobRight] from shiftProtoBobRight shiftProtoBobRight::@8
(byte) shiftProtoBobRight::carry#6 ← phi( shiftProtoBobRight/(byte) shiftProtoBobRight::carry#0 shiftProtoBobRight::@8/(byte) shiftProtoBobRight::carry#7 )
@ -1182,7 +1182,7 @@ shiftProtoBobRight::@return: scope:[shiftProtoBobRight] from shiftProtoBobRight
(void()) shiftProtoBobDown()
shiftProtoBobDown: scope:[shiftProtoBobDown] from prepareBobs::@6
(byte) shiftProtoBobDown::i#0 ← (number) $17
(byte) shiftProtoBobDown::i#0 ← (byte) $17
to:shiftProtoBobDown::@1
shiftProtoBobDown::@1: scope:[shiftProtoBobDown] from shiftProtoBobDown shiftProtoBobDown::@2
(byte) shiftProtoBobDown::i#2 ← phi( shiftProtoBobDown/(byte) shiftProtoBobDown::i#0 shiftProtoBobDown::@2/(byte) shiftProtoBobDown::i#1 )
@ -1214,7 +1214,7 @@ bobCharsetFindOrAddGlyph: scope:[bobCharsetFindOrAddGlyph] from prepareBobs::@1
(byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 ← phi( prepareBobs::@19/(byte*) bobCharsetFindOrAddGlyph::bob_glyph#0 prepareBobs::@8/(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 )
(byte) bob_charset_next_id#23 ← phi( prepareBobs::@19/(byte) bob_charset_next_id#2 prepareBobs::@8/(byte) bob_charset_next_id#21 )
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#0 ← (const byte*) BOB_CHARSET
(byte) bobCharsetFindOrAddGlyph::glyph_id#0 ← (number) 0
(byte) bobCharsetFindOrAddGlyph::glyph_id#0 ← (byte) 0
to:bobCharsetFindOrAddGlyph::@1
bobCharsetFindOrAddGlyph::@1: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph bobCharsetFindOrAddGlyph::@16
(byte*) bobCharsetFindOrAddGlyph::bob_glyph#9 ← phi( bobCharsetFindOrAddGlyph/(byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::@16/(byte*) bobCharsetFindOrAddGlyph::bob_glyph#11 )
@ -1229,15 +1229,15 @@ bobCharsetFindOrAddGlyph::@2: scope:[bobCharsetFindOrAddGlyph] from bobCharsetF
(byte) bobCharsetFindOrAddGlyph::glyph_id#12 ← phi( bobCharsetFindOrAddGlyph::@1/(byte) bobCharsetFindOrAddGlyph::glyph_id#2 )
(byte*) bobCharsetFindOrAddGlyph::bob_glyph#6 ← phi( bobCharsetFindOrAddGlyph::@1/(byte*) bobCharsetFindOrAddGlyph::bob_glyph#9 )
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#8 ← phi( bobCharsetFindOrAddGlyph::@1/(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#12 )
(byte) bobCharsetFindOrAddGlyph::found#0 ← (number) 1
(byte) bobCharsetFindOrAddGlyph::i#0 ← (number) 0
(byte) bobCharsetFindOrAddGlyph::found#0 ← (byte) 1
(byte) bobCharsetFindOrAddGlyph::i#0 ← (byte) 0
to:bobCharsetFindOrAddGlyph::@4
bobCharsetFindOrAddGlyph::@3: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@1
(byte) bobCharsetFindOrAddGlyph::glyph_id#11 ← phi( bobCharsetFindOrAddGlyph::@1/(byte) bobCharsetFindOrAddGlyph::glyph_id#2 )
(byte) bob_charset_next_id#34 ← phi( bobCharsetFindOrAddGlyph::@1/(byte) bob_charset_next_id#15 )
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 ← phi( bobCharsetFindOrAddGlyph::@1/(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#12 )
(byte*) bobCharsetFindOrAddGlyph::bob_glyph#8 ← phi( bobCharsetFindOrAddGlyph::@1/(byte*) bobCharsetFindOrAddGlyph::bob_glyph#9 )
(byte) bobCharsetFindOrAddGlyph::i1#0 ← (number) 0
(byte) bobCharsetFindOrAddGlyph::i1#0 ← (byte) 0
to:bobCharsetFindOrAddGlyph::@20
bobCharsetFindOrAddGlyph::@4: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@2 bobCharsetFindOrAddGlyph::@7
(byte) bob_charset_next_id#41 ← phi( bobCharsetFindOrAddGlyph::@2/(byte) bob_charset_next_id#44 bobCharsetFindOrAddGlyph::@7/(byte) bob_charset_next_id#45 )
@ -1407,8 +1407,8 @@ SYMBOL TABLE SSA
(label) @end
(const byte*) BOB_CHARSET = (byte*)(number) $2000
(const byte*) BOB_SCREEN = (byte*)(number) $2800
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SHIFTS_X = (byte) 4
(const byte) BOB_SHIFTS_Y = (byte) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*)(number) $d020
@ -1419,9 +1419,9 @@ SYMBOL TABLE SSA
(const byte*) CIA2_PORT_A_DDR = (byte*)(number) $dd02
(const signed byte*) COS = (const signed byte*) SIN+(number) $40
(const byte*) D018 = (byte*)(number) $d018
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_SPACE = (byte) $3c
(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $14
(const byte) NUM_BOBS = (byte) $14
(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)
@ -1635,7 +1635,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#6
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@ -1650,7 +1650,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(signed word~) main::$10
(number~) main::$11
@ -2272,7 +2272,7 @@ SYMBOL TABLE SSA
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
(const byte*) progress_inc::progress_chars[] = { (byte)(number) $20, (byte)(number) $65, (byte)(number) $74, (byte)(number) $75, (byte)(number) $61, (byte)(number) $f6, (byte)(number) $e7, (byte)(number) $ea, (byte)(number) $e0 }
(const byte*) progress_inc::progress_chars[] = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
@ -2462,16 +2462,12 @@ Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memse
Adding number conversion cast (unumber) 7 in (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#2 & (number) 7
Adding number conversion cast (unumber) keyboard_key_pressed::$0 in (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#2 & (unumber)(number) 7
Adding number conversion cast (unumber) 3 in (byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key#2 >> (number) 3
Adding number conversion cast (unumber) 0 in (word) mulf_init::sqr#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mulf_init::x_2#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mulf_init::c#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte*) mulf_init::sqr1_hi#0 ← (const byte*) mulf_sqr1_hi+(number) 1
Adding number conversion cast (unumber) 1 in (byte*) mulf_init::sqr1_lo#0 ← (const byte*) mulf_sqr1_lo+(number) 1
Adding number conversion cast (unumber) $200 in (bool~) mulf_init::$0 ← (byte*) mulf_init::sqr1_lo#2 != (const byte*) mulf_sqr1_lo+(number) $200
Adding number conversion cast (unumber) 1 in (number~) mulf_init::$1 ← (byte) mulf_init::c#1 & (number) 1
Adding number conversion cast (unumber) mulf_init::$1 in (number~) mulf_init::$1 ← (byte) mulf_init::c#1 & (unumber)(number) 1
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$2 ← (unumber~) mulf_init::$1 == (number) 0
Adding number conversion cast (unumber) $ff in (byte) mulf_init::dir#0 ← (number) $ff
Adding number conversion cast (unumber) $1ff in (bool~) mulf_init::$7 ← (byte*) mulf_init::sqr2_lo#2 != (const byte*) mulf_sqr2_lo+(number) $1ff
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$9 ← (byte) mulf_init::x_255#1 == (number) 0
Adding number conversion cast (unumber) $100 in *((const byte*) mulf_sqr2_lo+(number) $1ff) ← *((const byte*) mulf_sqr1_lo+(number) $100)
@ -2498,10 +2494,8 @@ Adding number conversion cast (unumber) main::toD0181_$7 in (number~) main::toD0
Adding number conversion cast (unumber) main::toD0181_$8 in (number~) main::toD0181_$8 ← (unumber~) main::toD0181_$3 | (unumber~) main::toD0181_$7
Adding number conversion cast (unumber) 0 in (byte) memset::c#0 ← (number) 0
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Adding number conversion cast (unumber) 0 in (byte) main::angle#0 ← (number) 0
Adding number conversion cast (unumber) $f8 in (bool~) main::$8 ← *((const byte*) RASTER) < (number) $f8
Adding number conversion cast (unumber) $f in *((const byte*) BORDERCOL) ← (number) $f
Adding number conversion cast (snumber) $1e in (signed byte) main::r#0 ← (number) $1e
Adding number conversion cast (unumber) 1 in *((const byte*) BORDERCOL) ← (number) 1
Adding number conversion cast (snumber) $4b*$100 in (number~) main::$11 ← (signed word~) main::$10 + (number) $4b*(number) $100
Adding number conversion cast (snumber) main::$11 in (number~) main::$11 ← (signed word~) main::$10 + (snumber)(number) $4b*(number) $100
@ -2589,15 +2583,8 @@ Adding number conversion cast (unumber) $52 in *((byte*) renderBobCleanup::scree
Adding number conversion cast (unumber) 1 in (byte) renderBobCleanup::i#1 ← (byte) renderBobCleanup::i#2 + rangenext(0,NUM_BOBS-1)
Adding number conversion cast (unumber) 0 in (byte) bob_charset_next_id#2 ← (number) 0
Adding number conversion cast (unumber) $30 in (byte*) bobCharsetFindOrAddGlyph::bob_glyph#0 ← (const byte*) PROTO_BOB+(number) $30
Adding number conversion cast (unumber) 0 in (byte) prepareBobs::bob_table_idx#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) prepareBobs::shift_y#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) prepareBobs::shift_x#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) prepareBobs::cell#0 ← (number) 0
Adding number conversion cast (unumber) 9 in (bool~) prepareBobs::$5 ← (byte) prepareBobs::cell#2 < (number) 9
Adding number conversion cast (unumber) 8 in (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#3 + (number) 8
Adding number conversion cast (unumber) 0 in (byte) shiftProtoBobRight::carry#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) shiftProtoBobRight::j#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) shiftProtoBobRight::i#0 ← (number) 0
Adding number conversion cast (unumber) 3*3*8 in (bool~) shiftProtoBobRight::$0 ← (byte) shiftProtoBobRight::i#2 < (number) 3*(number) 3*(number) 8
Adding number conversion cast (unumber) 1 in (number~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (number) 1
Adding number conversion cast (unumber) shiftProtoBobRight::$1 in (number~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (unumber)(number) 1
@ -2606,7 +2593,6 @@ Adding number conversion cast (unumber) 1 in (byte~) shiftProtoBobRight::$5 ←
Adding number conversion cast (unumber) $30 in (bool~) shiftProtoBobRight::$7 ← (byte) shiftProtoBobRight::j#4 >= (number) $30
Adding number conversion cast (unumber) $2f in (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#5 - (number) $2f
Adding number conversion cast (unumber) $18 in (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#6 + (number) $18
Adding number conversion cast (unumber) $17 in (byte) shiftProtoBobDown::i#0 ← (number) $17
Adding number conversion cast (unumber) 0 in (bool~) shiftProtoBobDown::$0 ← (byte) shiftProtoBobDown::i#2 > (number) 0
Adding number conversion cast (unumber) $17 in *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#3) ← *((const byte*) PROTO_BOB+(number) $17 + (byte) shiftProtoBobDown::i#3)
Adding number conversion cast (unumber) $2f in *((const byte*) PROTO_BOB+(number) $18 + (byte) shiftProtoBobDown::i#3) ← *((const byte*) PROTO_BOB+(number) $2f + (byte) shiftProtoBobDown::i#3)
@ -2619,10 +2605,6 @@ Adding number conversion cast (unumber) 0 in *((const byte*) PROTO_BOB + (number
Adding number conversion cast (unumber) $18 in *((const byte*) PROTO_BOB + (number) $18) ← ((unumber)) (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) PROTO_BOB + (number) $30) ← (number) 0
Adding number conversion cast (unumber) $30 in *((const byte*) PROTO_BOB + (number) $30) ← ((unumber)) (number) 0
Adding number conversion cast (unumber) 0 in (byte) bobCharsetFindOrAddGlyph::glyph_id#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte) bobCharsetFindOrAddGlyph::found#0 ← (number) 1
Adding number conversion cast (unumber) 0 in (byte) bobCharsetFindOrAddGlyph::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) bobCharsetFindOrAddGlyph::i1#0 ← (number) 0
Adding number conversion cast (unumber) 8 in (bool~) bobCharsetFindOrAddGlyph::$1 ← (byte) bobCharsetFindOrAddGlyph::i#2 < (number) 8
Adding number conversion cast (unumber) 0 in (byte) bobCharsetFindOrAddGlyph::found#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) bobCharsetFindOrAddGlyph::$6 ← (number) 0 != (byte) bobCharsetFindOrAddGlyph::found#2
@ -2635,10 +2617,6 @@ Adding number conversion cast (unumber) 0 in (byte) progress_idx#9 ← (number)
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast (word) mulf_init::sqr#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::x_2#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::c#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::dir#0 ← (unumber)(number) $ff
Inlining cast (byte) mulf_init::dir#1 ← (unumber)(number) 1
Inlining cast (byte~) mulf8s_prepared::$0 ← (byte)(signed byte) mulf8s_prepared::b#1
Inlining cast (byte~) mulf8s_prepared::$9 ← (byte)(signed byte) mulf8s_prepared::b#3
@ -2651,9 +2629,7 @@ Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1
Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1
Inlining cast (byte) memset::c#0 ← (unumber)(number) 0
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (byte) main::angle#0 ← (unumber)(number) 0
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) $f
Inlining cast (signed byte) main::r#0 ← (snumber)(number) $1e
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 1
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 2
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 0
@ -2672,22 +2648,10 @@ Inlining cast *((byte*) renderBobCleanup::screen#0 + (unumber)(number) 2) ← (u
Inlining cast *((byte*) renderBobCleanup::screen#0 + (unumber)(number) $2a) ← (unumber)(number) 0
Inlining cast *((byte*) renderBobCleanup::screen#0 + (unumber)(number) $52) ← (unumber)(number) 0
Inlining cast (byte) bob_charset_next_id#2 ← (unumber)(number) 0
Inlining cast (byte) prepareBobs::bob_table_idx#0 ← (unumber)(number) 0
Inlining cast (byte) prepareBobs::shift_y#0 ← (unumber)(number) 0
Inlining cast (byte) prepareBobs::shift_x#0 ← (unumber)(number) 0
Inlining cast (byte) prepareBobs::cell#0 ← (unumber)(number) 0
Inlining cast (byte) shiftProtoBobRight::carry#0 ← (unumber)(number) 0
Inlining cast (byte) shiftProtoBobRight::j#0 ← (unumber)(number) 0
Inlining cast (byte) shiftProtoBobRight::i#0 ← (unumber)(number) 0
Inlining cast (byte) shiftProtoBobDown::i#0 ← (unumber)(number) $17
Inlining cast *((const byte*) PROTO_BOB+(unumber)(number) $30 + (byte) shiftProtoBobDown::i#3) ← (unumber)(number) 0
Inlining cast *((const byte*) PROTO_BOB + (unumber)(number) 0) ← (unumber)(number) 0
Inlining cast *((const byte*) PROTO_BOB + (unumber)(number) $18) ← (unumber)(number) 0
Inlining cast *((const byte*) PROTO_BOB + (unumber)(number) $30) ← (unumber)(number) 0
Inlining cast (byte) bobCharsetFindOrAddGlyph::glyph_id#0 ← (unumber)(number) 0
Inlining cast (byte) bobCharsetFindOrAddGlyph::found#0 ← (unumber)(number) 1
Inlining cast (byte) bobCharsetFindOrAddGlyph::i#0 ← (unumber)(number) 0
Inlining cast (byte) bobCharsetFindOrAddGlyph::i1#0 ← (unumber)(number) 0
Inlining cast (byte) bobCharsetFindOrAddGlyph::found#1 ← (unumber)(number) 0
Inlining cast (byte) progress_idx#6 ← (unumber)(number) 0
Inlining cast (byte) progress_idx#9 ← (unumber)(number) 0
@ -2699,22 +2663,6 @@ Simplifying constant pointer cast (byte*) 56320
Simplifying constant pointer cast (byte*) 56321
Simplifying constant pointer cast (byte*) 56576
Simplifying constant pointer cast (byte*) 56578
Simplifying constant integer cast $fe
Simplifying constant integer cast $fd
Simplifying constant integer cast $fb
Simplifying constant integer cast $f7
Simplifying constant integer cast $ef
Simplifying constant integer cast $df
Simplifying constant integer cast $bf
Simplifying constant integer cast $7f
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast 8
Simplifying constant integer cast $10
Simplifying constant integer cast $20
Simplifying constant integer cast $40
Simplifying constant integer cast $80
Simplifying constant pointer cast (byte*) 253
Simplifying constant pointer cast (byte*) 254
Simplifying constant pointer cast (byte*) 255
@ -2723,29 +2671,16 @@ Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 4096
Simplifying constant pointer cast (byte*) 10240
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast $20
Simplifying constant integer cast $65
Simplifying constant integer cast $74
Simplifying constant integer cast $75
Simplifying constant integer cast $61
Simplifying constant integer cast $f6
Simplifying constant integer cast $e7
Simplifying constant integer cast $ea
Simplifying constant integer cast $e0
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Simplifying constant integer cast 7
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $200
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast -1
Simplifying constant integer cast $ff
Simplifying constant integer cast $1ff
Simplifying constant integer cast 0
Simplifying constant integer cast $100
@ -2766,10 +2701,8 @@ Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast $3e8
Simplifying constant integer cast 0
Simplifying constant integer cast $f8
Simplifying constant integer cast $f
Simplifying constant integer cast $1e
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 2
@ -2839,22 +2772,14 @@ Simplifying constant integer cast $52
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $30
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 9
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast $30
Simplifying constant integer cast $2f
Simplifying constant integer cast $18
Simplifying constant integer cast $17
Simplifying constant integer cast 0
Simplifying constant integer cast $17
Simplifying constant integer cast $2f
@ -2867,10 +2792,6 @@ Simplifying constant integer cast 0
Simplifying constant integer cast $18
Simplifying constant integer cast 0
Simplifying constant integer cast $30
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
@ -2885,15 +2806,11 @@ Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (word) $200
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (word) $1ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $100
@ -2912,10 +2829,8 @@ Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $f8
Finalized unsigned number type (byte) $f
Finalized signed number type (signed byte) $1e
Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 2
Finalized unsigned number type (byte) 2
@ -2976,22 +2891,14 @@ Finalized unsigned number type (byte) $52
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $30
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 9
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $30
Finalized unsigned number type (byte) $2f
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) $17
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $17
Finalized unsigned number type (byte) $2f
@ -3004,10 +2911,6 @@ Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $30
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
@ -3634,7 +3537,7 @@ Constant inlined shiftProtoBobRight::$3 = (byte) $80
Constant inlined renderBobCleanup::i#0 = (byte) 0
Constant inlined main::r#0 = (signed byte) $1e
Constant inlined prepareBobs::shift_y#0 = (byte) 0
Constant inlined mulf_init::sqr#0 = (byte) 0
Constant inlined mulf_init::sqr#0 = (word) 0
Constant inlined progress_idx#17 = (byte) 0
Constant inlined renderBobInit::y#0 = (byte) 0
Constant inlined main::angle#0 = (byte) 0
@ -4449,7 +4352,7 @@ mulf_init: scope:[mulf_init] from main
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
[244] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
[244] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
[244] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[244] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[244] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
[244] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
[245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
@ -6660,7 +6563,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [244] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [244] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
lda #<0
sta.z sqr
lda #>0
@ -8959,7 +8862,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [244] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [244] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
lda #<0
sta.z sqr
lda #>0
@ -9482,8 +9385,8 @@ FINAL SYMBOL TABLE
(label) @end
(const byte*) BOB_CHARSET = (byte*) 8192
(const byte*) BOB_SCREEN = (byte*) 10240
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SHIFTS_X = (byte) 4
(const byte) BOB_SHIFTS_Y = (byte) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*) 53280
@ -9494,9 +9397,9 @@ FINAL SYMBOL TABLE
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const signed byte*) COS = (const signed byte*) SIN+(byte) $40
(const byte*) D018 = (byte*) 53272
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_SPACE = (byte) $3c
(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $14
(const byte) NUM_BOBS = (byte) $14
(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)
@ -11309,7 +11212,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [244] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [244] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
txa
sta.z sqr
sta.z sqr+1

View File

@ -3,8 +3,8 @@
(label) @end
(const byte*) BOB_CHARSET = (byte*) 8192
(const byte*) BOB_SCREEN = (byte*) 10240
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SHIFTS_X = (byte) 4
(const byte) BOB_SHIFTS_Y = (byte) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*) 53280
@ -15,9 +15,9 @@
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const signed byte*) COS = (const signed byte*) SIN+(byte) $40
(const byte*) D018 = (byte*) 53272
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_SPACE = (byte) $3c
(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $14
(const byte) NUM_BOBS = (byte) $14
(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)

View File

@ -381,7 +381,7 @@ mulf_init: scope:[mulf_init] from init::@4
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
[184] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
[184] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
[184] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[184] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[184] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
[184] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
[185] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2

View File

@ -100,9 +100,9 @@ CONTROL FLOW GRAPH SSA
to:@4
@4: scope:[] from @begin
(byte*) PLEX_SCREEN_PTR#0 ← (byte*)(number) $400+(number) $3f8
(byte) plex_show_idx#0 ← (number) 0
(byte) plex_sprite_idx#0 ← (number) 0
(byte) plex_sprite_msb#0 ← (number) 1
(byte) plex_show_idx#0 ← (byte) 0
(byte) plex_sprite_idx#0 ← (byte) 0
(byte) plex_sprite_msb#0 ← (byte) 1
to:@9
(void()) plexInit((byte*) plexInit::screen)
@ -312,14 +312,14 @@ plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexSho
(byte) plex_sprite_idx#40 ← phi( @4/(byte) plex_sprite_idx#0 )
(byte) plex_show_idx#40 ← phi( @4/(byte) plex_show_idx#0 )
(byte*) PLEX_SCREEN_PTR#26 ← phi( @4/(byte*) PLEX_SCREEN_PTR#0 )
(byte) plex_free_next#4 ← (number) 0
(byte) plex_free_next#4 ← (byte) 0
to:@37
(void()) mulf_init()
mulf_init: scope:[mulf_init] from init::@4
(word) mulf_init::sqr#0 ← (number) 0
(byte) mulf_init::x_2#0 ← (number) 0
(byte) mulf_init::c#0 ← (number) 0
(word) mulf_init::sqr#0 ← (word) 0
(byte) mulf_init::x_2#0 ← (byte) 0
(byte) mulf_init::c#0 ← (byte) 0
(byte*) mulf_init::sqr1_hi#0 ← (const byte*) mulf_sqr1_hi+(number) 1
(byte*) mulf_init::sqr1_lo#0 ← (const byte*) mulf_sqr1_lo+(number) 1
to:mulf_init::@1
@ -346,7 +346,7 @@ mulf_init::@2: scope:[mulf_init] from mulf_init::@1
to:mulf_init::@7
mulf_init::@3: scope:[mulf_init] from mulf_init::@1
(byte) mulf_init::x_255#0 ← (byte)(number) -1
(byte) mulf_init::dir#0 ← (number) $ff
(byte) mulf_init::dir#0 ← (byte) $ff
(byte*) mulf_init::sqr2_hi#0 ← (const byte*) mulf_sqr2_hi
(byte*) mulf_init::sqr2_lo#0 ← (const byte*) mulf_sqr2_lo
to:mulf_init::@9
@ -746,7 +746,7 @@ loop: scope:[loop] from main::@1
(byte) plex_sprite_msb#35 ← phi( main::@1/(byte) plex_sprite_msb#25 )
(byte) plex_sprite_idx#36 ← phi( main::@1/(byte) plex_sprite_idx#28 )
(byte) plex_show_idx#36 ← phi( main::@1/(byte) plex_show_idx#28 )
(byte) loop::angle#0 ← (number) 0
(byte) loop::angle#0 ← (byte) 0
to:loop::@1
loop::@1: scope:[loop] from loop loop::@34
(byte*) PLEX_SCREEN_PTR#47 ← phi( loop/(byte*) PLEX_SCREEN_PTR#48 loop::@34/(byte*) PLEX_SCREEN_PTR#49 )
@ -775,7 +775,7 @@ loop::@5: scope:[loop] from loop::@4
(byte) plex_show_idx#46 ← phi( loop::@4/(byte) plex_show_idx#48 )
(byte) loop::angle#2 ← phi( loop::@4/(byte) loop::angle#4 )
*((const byte*) BORDERCOL) ← (number) $f
(signed byte) loop::r#0 ← (number) $1e
(signed byte) loop::r#0 ← (signed byte) $1e
(byte) loop::a#0 ← (byte) loop::angle#2
(byte) loop::i#0 ← (byte) 0
to:loop::@6
@ -1032,16 +1032,16 @@ SYMBOL TABLE SSA
(label) @9
(label) @begin
(label) @end
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) CIA1_PORT_A = (byte*)(number) $dc00
(const byte*) CIA1_PORT_B = (byte*)(number) $dc01
(const signed byte*) COS = (const signed byte*) SIN+(number) $40
(const byte*) D011 = (byte*)(number) $d011
(const byte) GREEN = (number) 5
(const byte) KEY_SPACE = (number) $3c
(const byte) NUM_BOBS = (number) $10
(const byte) PLEX_COUNT = (number) $20
(const byte) GREEN = (byte) 5
(const byte) KEY_SPACE = (byte) $3c
(const byte) NUM_BOBS = (byte) $10
(const byte) PLEX_COUNT = (byte) $20
(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
@ -1115,9 +1115,9 @@ SYMBOL TABLE SSA
(const byte*) SPRITES_XMSB = (byte*)(number) $d010
(const byte*) SPRITES_XPOS = (byte*)(number) $d000
(const byte*) SPRITES_YPOS = (byte*)(number) $d001
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RST8 = (number) $80
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) VIC_RST8 = (byte) $80
(void()) exit()
(byte~) exit::$0
(bool~) exit::$1
@ -1172,7 +1172,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#6
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@ -1187,7 +1187,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) loop()
(bool~) loop::$0
(signed word~) loop::$1
@ -1828,9 +1828,6 @@ SYMBOL TABLE SSA
Fixing inline constructor with mulf8u_prepared::$0 ← (byte)*(mulf8u_prepared::memB) w= (byte)*(mulf8u_prepared::resL)
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $40 in
Adding number conversion cast (unumber) 0 in (byte) plex_show_idx#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) plex_sprite_idx#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte) plex_sprite_msb#0 ← (number) 1
Adding number conversion cast (unumber) $3f8 in (byte*~) plexInit::plexSetScreen1_$0 ← (byte*) plexInit::plexSetScreen1_screen#1 + (number) $3f8
Adding number conversion cast (unumber) 1 in (byte) plexInit::i#1 ← (byte) plexInit::i#2 + rangenext(0,PLEX_COUNT-1)
Adding number conversion cast (unumber) 1 in (number~) plexSort::$1 ← (byte) plexSort::m#2 + (number) 1
@ -1862,17 +1859,12 @@ Adding number conversion cast (unumber) plexShowSprite::$6 in (number~) plexShow
Adding number conversion cast (unumber) 2 in (byte) plex_sprite_msb#3 ← (byte) plex_sprite_msb#15 * (number) 2
Adding number conversion cast (unumber) 0 in (bool~) plexShowSprite::$7 ← (byte) plex_sprite_msb#3 == (number) 0
Adding number conversion cast (unumber) 1 in (byte) plex_sprite_msb#4 ← (number) 1
Adding number conversion cast (unumber) 0 in (byte) plex_free_next#4 ← (number) 0
Adding number conversion cast (unumber) 0 in (word) mulf_init::sqr#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mulf_init::x_2#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mulf_init::c#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte*) mulf_init::sqr1_hi#0 ← (const byte*) mulf_sqr1_hi+(number) 1
Adding number conversion cast (unumber) 1 in (byte*) mulf_init::sqr1_lo#0 ← (const byte*) mulf_sqr1_lo+(number) 1
Adding number conversion cast (unumber) $200 in (bool~) mulf_init::$0 ← (byte*) mulf_init::sqr1_lo#2 != (const byte*) mulf_sqr1_lo+(number) $200
Adding number conversion cast (unumber) 1 in (number~) mulf_init::$1 ← (byte) mulf_init::c#1 & (number) 1
Adding number conversion cast (unumber) mulf_init::$1 in (number~) mulf_init::$1 ← (byte) mulf_init::c#1 & (unumber)(number) 1
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$2 ← (unumber~) mulf_init::$1 == (number) 0
Adding number conversion cast (unumber) $ff in (byte) mulf_init::dir#0 ← (number) $ff
Adding number conversion cast (unumber) $1ff in (bool~) mulf_init::$7 ← (byte*) mulf_init::sqr2_lo#2 != (const byte*) mulf_sqr2_lo+(number) $1ff
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$9 ← (byte) mulf_init::x_255#1 == (number) 0
Adding number conversion cast (unumber) $100 in *((const byte*) mulf_sqr2_lo+(number) $1ff) ← *((const byte*) mulf_sqr1_lo+(number) $100)
@ -1901,10 +1893,8 @@ Adding number conversion cast (unumber) 1 in (byte) init::i#1 ← (byte) init::i
Adding number conversion cast (unumber) $ff in *((const byte*) SPRITES_ENABLE) ← (number) $ff
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Adding number conversion cast (unumber) 0 in (bool~) exit::$1 ← (number) 0 != (byte~) exit::$0
Adding number conversion cast (unumber) 0 in (byte) loop::angle#0 ← (number) 0
Adding number conversion cast (unumber) $d8 in (bool~) loop::$0 ← *((const byte*) RASTER) < (number) $d8
Adding number conversion cast (unumber) $f in *((const byte*) BORDERCOL) ← (number) $f
Adding number conversion cast (snumber) $1e in (signed byte) loop::r#0 ← (number) $1e
Adding number conversion cast (unumber) 6 in *((const byte*) BORDERCOL) ← (number) 6
Adding number conversion cast (snumber) 2 in (number~) loop::$2 ← (signed word~) loop::$1 * (number) 2
Adding number conversion cast (snumber) loop::$2 in (number~) loop::$2 ← (signed word~) loop::$1 * (snumber)(number) 2
@ -1923,20 +1913,12 @@ Adding number conversion cast (unumber) 0 in (bool~) loop::$12 ← (byte~) loop:
Adding number conversion cast (unumber) 1 in (byte) loop::i1#1 ← (byte) loop::i1#2 + rangenext(0,PLEX_COUNT-1)
Adding number conversion cast (unumber) 0 in (bool~) loop::$21 ← (number) 0 != (byte~) loop::$18
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) plex_show_idx#0 ← (unumber)(number) 0
Inlining cast (byte) plex_sprite_idx#0 ← (unumber)(number) 0
Inlining cast (byte) plex_sprite_msb#0 ← (unumber)(number) 1
Inlining cast (byte) plex_show_idx#1 ← (unumber)(number) 0
Inlining cast (byte) plex_sprite_idx#1 ← (unumber)(number) 0
Inlining cast (byte) plex_sprite_msb#1 ← (unumber)(number) 1
Inlining cast *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (unumber)(number) 0
Inlining cast (byte) plex_free_next#0 ← (unumber)(number) 0
Inlining cast (byte) plex_sprite_msb#4 ← (unumber)(number) 1
Inlining cast (byte) plex_free_next#4 ← (unumber)(number) 0
Inlining cast (word) mulf_init::sqr#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::x_2#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::c#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::dir#0 ← (unumber)(number) $ff
Inlining cast (byte) mulf_init::dir#1 ← (unumber)(number) 1
Inlining cast (byte~) mulf8s_prepared::$0 ← (byte)(signed byte) mulf8s_prepared::b#1
Inlining cast (byte~) mulf8s_prepared::$9 ← (byte)(signed byte) mulf8s_prepared::b#3
@ -1948,9 +1930,7 @@ Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast *((const byte*) SPRITES_ENABLE) ← (unumber)(number) $ff
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (byte) loop::angle#0 ← (unumber)(number) 0
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) $f
Inlining cast (signed byte) loop::r#0 ← (snumber)(number) $1e
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 6
Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 3
Successful SSA optimization Pass2InlineCast
@ -1968,27 +1948,8 @@ Simplifying constant pointer cast (byte*) 253
Simplifying constant pointer cast (byte*) 254
Simplifying constant pointer cast (byte*) 255
Simplifying constant pointer cast (signed byte*) 253
Simplifying constant integer cast $fe
Simplifying constant integer cast $fd
Simplifying constant integer cast $fb
Simplifying constant integer cast $f7
Simplifying constant integer cast $ef
Simplifying constant integer cast $df
Simplifying constant integer cast $bf
Simplifying constant integer cast $7f
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast 8
Simplifying constant integer cast $10
Simplifying constant integer cast $20
Simplifying constant integer cast $40
Simplifying constant integer cast $80
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast $3f8
Simplifying constant integer cast 1
Simplifying constant integer cast 1
@ -2011,17 +1972,12 @@ Simplifying constant integer cast 7
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $200
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast -1
Simplifying constant integer cast $ff
Simplifying constant integer cast $1ff
Simplifying constant integer cast 0
Simplifying constant integer cast $100
@ -2047,10 +2003,8 @@ Simplifying constant integer cast 1
Simplifying constant integer cast $ff
Simplifying constant integer cast $3e8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $d8
Simplifying constant integer cast $f
Simplifying constant integer cast $1e
Simplifying constant integer cast 6
Simplifying constant integer cast 2
Simplifying constant integer cast 2
@ -2064,9 +2018,6 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (word) $3f8
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
@ -2089,16 +2040,11 @@ Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (word) $200
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (word) $1ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $100
@ -2121,10 +2067,8 @@ Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $d8
Finalized unsigned number type (byte) $f
Finalized signed number type (signed byte) $1e
Finalized unsigned number type (byte) 6
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 2
@ -2632,7 +2576,7 @@ Constant inlined mulf_init::x_255#0 = (byte) -1
Constant inlined mulf_init::x_2#0 = (byte) 0
Constant inlined keyboard_key_pressed::key#0 = (const byte) KEY_SPACE
Constant inlined keyboard_key_pressed::key#1 = (const byte) KEY_SPACE
Constant inlined mulf_init::sqr#0 = (byte) 0
Constant inlined mulf_init::sqr#0 = (word) 0
Constant inlined loop::i1#0 = (byte) 0
Constant inlined plexInit::screen#0 = (const byte*) SCREEN
Constant inlined loop::angle#0 = (byte) 0
@ -3235,7 +3179,7 @@ mulf_init: scope:[mulf_init] from init::@4
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
[184] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
[184] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
[184] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[184] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
[184] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
[184] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
[185] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
@ -4903,7 +4847,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [184] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [184] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
lda #<0
sta.z sqr
lda #>0
@ -6559,7 +6503,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [184] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [184] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
lda #<0
sta.z sqr
lda #>0
@ -7061,16 +7005,16 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CIA1_PORT_A = (byte*) 56320
(const byte*) CIA1_PORT_B = (byte*) 56321
(const signed byte*) COS = (const signed byte*) SIN+(byte) $40
(const byte*) D011 = (byte*) 53265
(const byte) GREEN = (number) 5
(const byte) KEY_SPACE = (number) $3c
(const byte) NUM_BOBS = (number) $10
(const byte) PLEX_COUNT = (number) $20
(const byte) GREEN = (byte) 5
(const byte) KEY_SPACE = (byte) $3c
(const byte) NUM_BOBS = (byte) $10
(const byte) PLEX_COUNT = (byte) $20
(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
@ -7093,9 +7037,9 @@ FINAL SYMBOL TABLE
(const byte*) SPRITES_XMSB = (byte*) 53264
(const byte*) SPRITES_XPOS = (byte*) 53248
(const byte*) SPRITES_YPOS = (byte*) 53249
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RST8 = (number) $80
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) VIC_RST8 = (byte) $80
(void()) exit()
(byte~) exit::$0 reg byte a 22.0
(label) exit::@1
@ -8382,7 +8326,7 @@ mulf_init: {
sta.z sqr1_hi
lda #>mulf_sqr1_hi+1
sta.z sqr1_hi+1
// [184] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1
// [184] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1
txa
sta.z sqr
sta.z sqr+1

View File

@ -1,16 +1,16 @@
(label) @1
(label) @begin
(label) @end
(const byte) BLACK = (number) 0
(const byte) BLACK = (byte) 0
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CIA1_PORT_A = (byte*) 56320
(const byte*) CIA1_PORT_B = (byte*) 56321
(const signed byte*) COS = (const signed byte*) SIN+(byte) $40
(const byte*) D011 = (byte*) 53265
(const byte) GREEN = (number) 5
(const byte) KEY_SPACE = (number) $3c
(const byte) NUM_BOBS = (number) $10
(const byte) PLEX_COUNT = (number) $20
(const byte) GREEN = (byte) 5
(const byte) KEY_SPACE = (byte) $3c
(const byte) NUM_BOBS = (byte) $10
(const byte) PLEX_COUNT = (byte) $20
(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
@ -33,9 +33,9 @@
(const byte*) SPRITES_XMSB = (byte*) 53264
(const byte*) SPRITES_XPOS = (byte*) 53248
(const byte*) SPRITES_YPOS = (byte*) 53249
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RST8 = (number) $80
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) VIC_RST8 = (byte) $80
(void()) exit()
(byte~) exit::$0 reg byte a 22.0
(label) exit::@1

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