mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-07 06:37:31 +00:00
Added support for address-of pointers to members of structs.
This commit is contained in:
parent
bf0dbfde63
commit
facd70053d
@ -8,10 +8,7 @@ import dk.camelot64.kickc.model.*;
|
||||
import dk.camelot64.kickc.model.operators.*;
|
||||
import dk.camelot64.kickc.model.statements.*;
|
||||
import dk.camelot64.kickc.model.symbols.*;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeConversion;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeProcedure;
|
||||
import dk.camelot64.kickc.model.types.*;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
import dk.camelot64.kickc.parser.CParser;
|
||||
import dk.camelot64.kickc.parser.KickCParser;
|
||||
@ -2328,6 +2325,15 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
} else if(operator.equals(Operators.ADDRESS_OF) && child instanceof PointerDereferenceIndexed && ((PointerDereferenceIndexed) child).getPointer() instanceof ConstantValue && ((PointerDereferenceIndexed) child).getIndex() instanceof ConstantValue) {
|
||||
PointerDereferenceIndexed pointerDeref = (PointerDereferenceIndexed) child;
|
||||
return new ConstantBinary((ConstantValue) pointerDeref.getPointer(), Operators.PLUS, (ConstantValue) pointerDeref.getIndex());
|
||||
} else if(operator.equals(Operators.ADDRESS_OF) && child instanceof StructMemberRef && ((StructMemberRef) child).getStruct() instanceof PointerDereferenceSimple && ((PointerDereferenceSimple) ((StructMemberRef) child).getStruct()).getPointer() instanceof ConstantValue) {
|
||||
final ConstantValue structPointer = (ConstantValue) ((PointerDereferenceSimple) ((StructMemberRef) child).getStruct()).getPointer();
|
||||
final RValue structValue = ((StructMemberRef) child).getStruct();
|
||||
final SymbolTypeStruct structType = (SymbolTypeStruct) SymbolTypeInference.inferType(program.getScope(), structValue);
|
||||
StructDefinition structDefinition = structType.getStructDefinition(program.getScope());
|
||||
final String memberName = ((StructMemberRef) child).getMemberName();
|
||||
final ConstantRef memberOffset = SizeOfConstants.getStructMemberOffsetConstant(program.getScope(), structDefinition, memberName);
|
||||
final SymbolType memberType = structDefinition.getMember(memberName).getType();
|
||||
return new ConstantCastValue(new SymbolTypePointer(memberType), new ConstantBinary(new ConstantCastValue(new SymbolTypePointer(SymbolType.BYTE), structPointer), Operators.PLUS, memberOffset));
|
||||
} else if(child instanceof ConstantValue) {
|
||||
return new ConstantUnary((OperatorUnary) operator, (ConstantValue) child);
|
||||
} else {
|
||||
|
@ -410,33 +410,50 @@ public class Pass4CodeGeneration {
|
||||
Set<String> added = new LinkedHashSet<>();
|
||||
Collection<Variable> scopeConstants = scope.getAllConstants(false);
|
||||
|
||||
// Add all constants without data
|
||||
// First add all constants without data that can become constants in KickAsm
|
||||
for(Variable constantVar : scopeConstants) {
|
||||
if(!hasData(constantVar)) {
|
||||
String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName();
|
||||
if(asmName != null && !added.contains(asmName)) {
|
||||
if(SymbolType.isInteger(constantVar.getType()) && constantVar.getRef().getScopeDepth() > 0) {
|
||||
// Use label for integers referenced in other scope - to allow cross-scope referencing
|
||||
if(!useLabelForConst(scopeRef, constantVar)) {
|
||||
// Use constant for constant integers not referenced outside scope
|
||||
added.add(asmName);
|
||||
// Find the constant value calculation
|
||||
String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getInitValue(), 99, scopeRef);
|
||||
addConstant(asmName, constantVar, asmConstant, asm);
|
||||
}
|
||||
} else if(!(constantVar.getType() instanceof SymbolTypePointer)) {
|
||||
// Use constant otherwise
|
||||
added.add(asmName);
|
||||
// Find the constant value calculation
|
||||
String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getInitValue(), 99, scopeRef);
|
||||
addConstant(asmName, constantVar, asmConstant, asm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add constants without data that must be labels in KickAsm
|
||||
for(Variable constantVar : scopeConstants) {
|
||||
if(!hasData(constantVar)) {
|
||||
String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName();
|
||||
if(asmName != null && !added.contains(asmName)) {
|
||||
added.add(asmName);
|
||||
// Add any comments
|
||||
generateComments(asm, constantVar.getComments());
|
||||
// Ensure encoding is good
|
||||
ensureEncoding(asm, constantVar.getInitValue());
|
||||
// Find the constant value calculation
|
||||
String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getInitValue(), 99, scopeRef);
|
||||
if(constantVar.getType() instanceof SymbolTypePointer) {
|
||||
// Must use a label for pointers
|
||||
asm.addLabelDecl(AsmFormat.asmFix(asmName), asmConstant);
|
||||
added.add(asmName);
|
||||
String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getInitValue(), 99, scopeRef);
|
||||
addConstantLabelDecl(asmName, constantVar, asmConstant, asm);
|
||||
} else if(SymbolType.isInteger(constantVar.getType()) && constantVar.getRef().getScopeDepth() > 0) {
|
||||
// Use label for integers referenced in other scope - to allow cross-scope referencing
|
||||
if(useLabelForConst(scopeRef, constantVar)) {
|
||||
// Use label for integers referenced in other scope - to allow cross-scope referencing
|
||||
asm.addLabelDecl(AsmFormat.asmFix(asmName), asmConstant);
|
||||
} else {
|
||||
// Use constant for constant integers not referenced outside scope
|
||||
asm.addConstant(AsmFormat.asmFix(asmName), asmConstant);
|
||||
added.add(asmName);
|
||||
// Add any comments
|
||||
String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getInitValue(), 99, scopeRef);
|
||||
addConstantLabelDecl(asmName, constantVar, asmConstant, asm);
|
||||
}
|
||||
} else {
|
||||
// Use constant otherwise
|
||||
asm.addConstant(AsmFormat.asmFix(asmName), asmConstant);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -451,25 +468,38 @@ public class Pass4CodeGeneration {
|
||||
Registers.RegisterZpMem registerZp = (Registers.RegisterZpMem) register;
|
||||
String asmName = scopeVar.getAsmName();
|
||||
if(asmName != null && !added.contains(asmName)) {
|
||||
// Add any comments
|
||||
generateComments(asm, scopeVar.getComments());
|
||||
// Add the label declaration
|
||||
asm.addLabelDecl(AsmFormat.asmFix(asmName), AsmFormat.getAsmNumber(registerZp.getZp()));
|
||||
added.add(asmName);
|
||||
addConstantLabelDecl(asmName, scopeVar, AsmFormat.getAsmNumber(registerZp.getZp()), asm);
|
||||
}
|
||||
} else if(Registers.RegisterType.MAIN_MEM.equals(register.getType()) && ((Registers.RegisterMainMem) register).getAddress() != null) {
|
||||
String asmName = scopeVar.getAsmName();
|
||||
if(asmName != null && !added.contains(asmName)) {
|
||||
// Add any comments
|
||||
generateComments(asm, scopeVar.getComments());
|
||||
added.add(asmName);
|
||||
// Add the label declaration
|
||||
Long address = ((Registers.RegisterMainMem) register).getAddress();
|
||||
asm.addLabelDecl(AsmFormat.asmFix(asmName), AsmFormat.getAsmNumber(address));
|
||||
added.add(asmName);
|
||||
addConstantLabelDecl(asmName, scopeVar, AsmFormat.getAsmNumber(address), asm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void addConstant(String asmName, Variable constantVar, String asmConstant, AsmProgram asm) {
|
||||
// Add any comments
|
||||
generateComments(asm, constantVar.getComments());
|
||||
// Ensure encoding is good
|
||||
ensureEncoding(asm, constantVar.getInitValue());
|
||||
asm.addConstant(AsmFormat.asmFix(asmName), asmConstant);
|
||||
}
|
||||
|
||||
private void addConstantLabelDecl(String asmName, Variable variable, String asmConstant, AsmProgram asm) {
|
||||
// Add any comments
|
||||
generateComments(asm, variable.getComments());
|
||||
// Ensure encoding is good
|
||||
ensureEncoding(asm, variable.getInitValue());
|
||||
// Find the constant value calculation
|
||||
asm.addLabelDecl(AsmFormat.asmFix(asmName), asmConstant);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -662,23 +692,6 @@ public class Pass4CodeGeneration {
|
||||
dataChunk.addDataNumeric(AsmDataNumeric.Type.BYTE, "0", null);
|
||||
}
|
||||
dataNumElements = stringValue.getStringLength();
|
||||
|
||||
/*
|
||||
try {
|
||||
ConstantLiteral literal = value.calculateLiteral(getScope());
|
||||
if(literal instanceof ConstantString) {
|
||||
// Ensure encoding is good
|
||||
String asmConstant = AsmFormat.getAsmConstant(program, literal, 99, scopeRef);
|
||||
dataChunk.addDataString(asmConstant, getEncoding(literal));
|
||||
if(((ConstantString) literal).isZeroTerminated()) {
|
||||
dataChunk.addDataNumeric(AsmDataNumeric.Type.BYTE, "0", null);
|
||||
}
|
||||
dataNumElements = ((ConstantString) literal).getStringLength();
|
||||
}
|
||||
} catch(ConstantNotLiteral e) {
|
||||
// can't calculate literal value, so it is not data - just return
|
||||
}
|
||||
*/
|
||||
} else {
|
||||
// Assume we have a ConstantArrayList
|
||||
ConstantArrayList constantArrayList = (ConstantArrayList) value;
|
||||
|
@ -40,6 +40,16 @@ public class TestPrograms {
|
||||
public TestPrograms() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStructPointerToMember() throws IOException, URISyntaxException {
|
||||
compileAndCompare("struct-pointer-to-member.c", log());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSizeOfInConstPointer() throws IOException, URISyntaxException {
|
||||
compileAndCompare("sizeof-in-const-pointer.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTod1() throws IOException, URISyntaxException {
|
||||
compileAndCompare("tod-1.c");
|
||||
|
7
src/test/kc/sizeof-in-const-pointer.c
Normal file
7
src/test/kc/sizeof-in-const-pointer.c
Normal file
@ -0,0 +1,7 @@
|
||||
// Support for sizeof() in const pointer definition
|
||||
|
||||
// Commodore 64 processor port
|
||||
char * const SCREEN = 0x0400 +sizeof(char)*100;
|
||||
void main() {
|
||||
SCREEN[0] = 'a';
|
||||
}
|
23
src/test/kc/struct-pointer-to-member.c
Normal file
23
src/test/kc/struct-pointer-to-member.c
Normal file
@ -0,0 +1,23 @@
|
||||
// Support for pointer to struct member
|
||||
|
||||
// Commodore 64 screen colors
|
||||
struct SCREEN_COLORS {
|
||||
char BORDER;
|
||||
char BG0;
|
||||
char BG1;
|
||||
char BG2;
|
||||
char BG3;
|
||||
};
|
||||
|
||||
// Commodore 64 processor port
|
||||
struct SCREEN_COLORS* const COLORS = 0xd020;
|
||||
|
||||
// The border color
|
||||
char * const BORDERCOL = &COLORS->BORDER;
|
||||
// The background color
|
||||
char * const BGCOL = &COLORS->BG0;
|
||||
|
||||
void main() {
|
||||
COLORS->BORDER = 0;
|
||||
*BGCOL = 6;
|
||||
}
|
@ -2,8 +2,8 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label SCREEN = $400
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.label SCREEN = $400
|
||||
.label idx = 3
|
||||
main: {
|
||||
.label i = 2
|
||||
|
@ -294,8 +294,8 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.label SCREEN = $400
|
||||
.label idx = 3
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -457,8 +457,8 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.label SCREEN = $400
|
||||
.label idx = 3
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -653,8 +653,8 @@ Score: 457
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.label SCREEN = $400
|
||||
.label idx = 3
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
|
@ -2,10 +2,10 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label screen1 = $400
|
||||
.label cols = $d800
|
||||
.const GREEN = 5
|
||||
.const RED = 2
|
||||
.label screen1 = $400
|
||||
.label cols = $d800
|
||||
.label screen2 = screen1+$28
|
||||
main: {
|
||||
// test(i++, a)
|
||||
|
@ -699,10 +699,10 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label screen1 = $400
|
||||
.label cols = $d800
|
||||
.const GREEN = 5
|
||||
.const RED = 2
|
||||
.label screen1 = $400
|
||||
.label cols = $d800
|
||||
.label screen2 = screen1+$28
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -974,10 +974,10 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label screen1 = $400
|
||||
.label cols = $d800
|
||||
.const GREEN = 5
|
||||
.const RED = 2
|
||||
.label screen1 = $400
|
||||
.label cols = $d800
|
||||
.label screen2 = screen1+$28
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -1312,10 +1312,10 @@ Score: 202
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label screen1 = $400
|
||||
.label cols = $d800
|
||||
.const GREEN = 5
|
||||
.const RED = 2
|
||||
.label screen1 = $400
|
||||
.label cols = $d800
|
||||
.label screen2 = screen1+$28
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
|
@ -208,9 +208,9 @@ memset: {
|
||||
// Copy block of memory (forwards)
|
||||
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
||||
memcpy: {
|
||||
.const num = $28*$19-$28
|
||||
.label destination = $400
|
||||
.label source = $400+$28
|
||||
.const num = $28*$19-$28
|
||||
.label src_end = source+num
|
||||
.label dst = $b
|
||||
.label src = 5
|
||||
|
@ -3665,9 +3665,9 @@ memset: {
|
||||
// Copy block of memory (forwards)
|
||||
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
||||
memcpy: {
|
||||
.const num = $28*$19-$28
|
||||
.label destination = $400
|
||||
.label source = $400+$28
|
||||
.const num = $28*$19-$28
|
||||
.label src_end = source+num
|
||||
.label dst = $d
|
||||
.label src = $b
|
||||
@ -4869,9 +4869,9 @@ memset: {
|
||||
// Copy block of memory (forwards)
|
||||
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
||||
memcpy: {
|
||||
.const num = $28*$19-$28
|
||||
.label destination = $400
|
||||
.label source = $400+$28
|
||||
.const num = $28*$19-$28
|
||||
.label src_end = source+num
|
||||
.label dst = $b
|
||||
.label src = 5
|
||||
@ -6157,9 +6157,9 @@ memset: {
|
||||
// Copy block of memory (forwards)
|
||||
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
||||
memcpy: {
|
||||
.const num = $28*$19-$28
|
||||
.label destination = $400
|
||||
.label source = $400+$28
|
||||
.const num = $28*$19-$28
|
||||
.label src_end = source+num
|
||||
.label dst = $b
|
||||
.label src = 5
|
||||
|
@ -1,8 +1,8 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label BGCOL = $d021
|
||||
.const BLACK = 0
|
||||
.label BGCOL = $d021
|
||||
main: {
|
||||
// *BGCOL = BLACK
|
||||
lda #BLACK
|
||||
|
@ -77,8 +77,8 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BGCOL = $d021
|
||||
.const BLACK = 0
|
||||
.label BGCOL = $d021
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -123,8 +123,8 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BGCOL = $d021
|
||||
.const BLACK = 0
|
||||
.label BGCOL = $d021
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -190,8 +190,8 @@ Score: 12
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BGCOL = $d021
|
||||
.const BLACK = 0
|
||||
.label BGCOL = $d021
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -1,13 +1,13 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const BLUE = 6
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
main: {
|
||||
|
@ -1301,13 +1301,13 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const BLUE = 6
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
// @begin
|
||||
@ -2181,13 +2181,13 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const BLUE = 6
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
// @begin
|
||||
@ -3167,13 +3167,13 @@ Score: 51752
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const BLUE = 6
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
// @begin
|
||||
|
@ -4,13 +4,13 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const BLUE = 6
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
main: {
|
||||
|
@ -1198,13 +1198,13 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const BLUE = 6
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
// @begin
|
||||
@ -1975,13 +1975,13 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const BLUE = 6
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
// @begin
|
||||
@ -2851,13 +2851,13 @@ Score: 6073
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const BLUE = 6
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
// @begin
|
||||
|
@ -3,12 +3,12 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
|
@ -2572,12 +2572,12 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
@ -3701,12 +3701,12 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
@ -4954,12 +4954,12 @@ Score: 30221
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
|
@ -3,15 +3,15 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const WHITE = 1
|
||||
.const PURPLE = 4
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = 2
|
||||
|
@ -2289,15 +2289,15 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const WHITE = 1
|
||||
.const PURPLE = 4
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = 2
|
||||
@ -3399,15 +3399,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const WHITE = 1
|
||||
.const PURPLE = 4
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = 2
|
||||
@ -4679,15 +4679,15 @@ Score: 30186
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
.const WHITE = 1
|
||||
.const PURPLE = 4
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = 2
|
||||
|
@ -5,36 +5,36 @@
|
||||
.pc = $80d "Program"
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = 8
|
||||
|
@ -1688,36 +1688,36 @@ Target platform is c64basic / MOS6502X
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $14
|
||||
@ -2462,36 +2462,36 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = 8
|
||||
@ -3377,36 +3377,36 @@ Score: 3175
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = 8
|
||||
|
@ -5,32 +5,15 @@
|
||||
.pc = $80d "Program"
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
@ -42,6 +25,23 @@
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $16
|
||||
@ -587,10 +587,10 @@ bitmap_init: {
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($19) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label wavelength = $200
|
||||
.label __6 = 8
|
||||
.label __8 = $24
|
||||
.label step = $20
|
||||
|
@ -3822,32 +3822,15 @@ Target platform is c64basic / MOS6502X
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
@ -3859,6 +3842,23 @@ Target platform is c64basic / MOS6502X
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $41
|
||||
@ -4808,10 +4808,10 @@ bitmap_init: {
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($2c) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label wavelength = $200
|
||||
.label __6 = $9d
|
||||
.label __8 = $a1
|
||||
.label step = $93
|
||||
@ -6183,32 +6183,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
@ -6220,6 +6203,23 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $16
|
||||
@ -7035,10 +7035,10 @@ bitmap_init: {
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($19) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label wavelength = $200
|
||||
.label __6 = 8
|
||||
.label __8 = $24
|
||||
.label step = $20
|
||||
@ -8488,32 +8488,15 @@ Score: 20648
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
@ -8525,6 +8508,23 @@ Score: 20648
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $16
|
||||
@ -9302,10 +9302,10 @@ bitmap_init: {
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($19) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label wavelength = $200
|
||||
.label __6 = 8
|
||||
.label __8 = $24
|
||||
.label step = $20
|
||||
|
@ -5,33 +5,15 @@
|
||||
.pc = $80d "Program"
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
@ -43,6 +25,24 @@
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $1b
|
||||
@ -624,10 +624,10 @@ bitmap_init: {
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($1c) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label wavelength = $200
|
||||
.label __6 = $b
|
||||
.label __8 = $25
|
||||
.label step = $21
|
||||
|
@ -4028,33 +4028,15 @@ Target platform is c64basic / MOS6502X
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
@ -4066,6 +4048,24 @@ Target platform is c64basic / MOS6502X
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $44
|
||||
@ -5062,10 +5062,10 @@ bitmap_init: {
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($2f) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label wavelength = $200
|
||||
.label __6 = $9c
|
||||
.label __8 = $a0
|
||||
.label step = $92
|
||||
@ -6464,33 +6464,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
@ -6502,6 +6484,24 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $1b
|
||||
@ -7376,10 +7376,10 @@ bitmap_init: {
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($1c) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label wavelength = $200
|
||||
.label __6 = $b
|
||||
.label __8 = $25
|
||||
.label step = $21
|
||||
@ -8860,33 +8860,15 @@ Score: 20833
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
@ -8898,6 +8880,24 @@ Score: 20833
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $1b
|
||||
@ -9730,10 +9730,10 @@ bitmap_init: {
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($1c) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label wavelength = $200
|
||||
.label __6 = $b
|
||||
.label __8 = $25
|
||||
.label step = $21
|
||||
|
@ -3,12 +3,12 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
.const WHITE = 1
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label COSTAB = SINTAB+$40
|
||||
|
@ -2439,12 +2439,12 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
.const WHITE = 1
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label COSTAB = SINTAB+$40
|
||||
@ -3663,12 +3663,12 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
.const WHITE = 1
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label COSTAB = SINTAB+$40
|
||||
@ -4974,12 +4974,12 @@ Score: 26883
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
.const WHITE = 1
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label COSTAB = SINTAB+$40
|
||||
|
@ -1,17 +1,17 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label BITMAP = $2000
|
||||
.label D011 = $d011
|
||||
.const BMM = $20
|
||||
.const DEN = $10
|
||||
.const RSEL = 8
|
||||
.const plots_cnt = 8
|
||||
.label BITMAP = $2000
|
||||
.label D011 = $d011
|
||||
.label RASTER = $d012
|
||||
.label D018 = $d018
|
||||
.label BGCOL = $d020
|
||||
.label FGCOL = $d021
|
||||
.label SCREEN = $400
|
||||
.const plots_cnt = 8
|
||||
main: {
|
||||
// *BGCOL = 0
|
||||
lda #0
|
||||
|
@ -860,17 +860,17 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BITMAP = $2000
|
||||
.label D011 = $d011
|
||||
.const BMM = $20
|
||||
.const DEN = $10
|
||||
.const RSEL = 8
|
||||
.const plots_cnt = 8
|
||||
.label BITMAP = $2000
|
||||
.label D011 = $d011
|
||||
.label RASTER = $d012
|
||||
.label D018 = $d018
|
||||
.label BGCOL = $d020
|
||||
.label FGCOL = $d021
|
||||
.label SCREEN = $400
|
||||
.const plots_cnt = 8
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -1400,17 +1400,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BITMAP = $2000
|
||||
.label D011 = $d011
|
||||
.const BMM = $20
|
||||
.const DEN = $10
|
||||
.const RSEL = 8
|
||||
.const plots_cnt = 8
|
||||
.label BITMAP = $2000
|
||||
.label D011 = $d011
|
||||
.label RASTER = $d012
|
||||
.label D018 = $d018
|
||||
.label BGCOL = $d020
|
||||
.label FGCOL = $d021
|
||||
.label SCREEN = $400
|
||||
.const plots_cnt = 8
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -1969,17 +1969,17 @@ Score: 6531
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BITMAP = $2000
|
||||
.label D011 = $d011
|
||||
.const BMM = $20
|
||||
.const DEN = $10
|
||||
.const RSEL = 8
|
||||
.const plots_cnt = 8
|
||||
.label BITMAP = $2000
|
||||
.label D011 = $d011
|
||||
.label RASTER = $d012
|
||||
.label D018 = $d018
|
||||
.label BGCOL = $d020
|
||||
.label FGCOL = $d021
|
||||
.label SCREEN = $400
|
||||
.const plots_cnt = 8
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -1,8 +1,8 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label SCREEN = $400
|
||||
.const STAR = $51
|
||||
.label SCREEN = $400
|
||||
main: {
|
||||
.const x0 = 4
|
||||
.const y0 = 4
|
||||
|
@ -354,8 +354,8 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const STAR = $51
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -510,8 +510,8 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const STAR = $51
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -701,8 +701,8 @@ Score: 926
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const STAR = $51
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -2,12 +2,12 @@
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.label screen = $400
|
||||
.const STAR = $51
|
||||
.const x0 = 0
|
||||
.const y0 = 0
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.label screen = $400
|
||||
.label x = 4
|
||||
.label idx = 2
|
||||
.label y = 5
|
||||
|
@ -383,12 +383,12 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label screen = $400
|
||||
.const STAR = $51
|
||||
.const x0 = 0
|
||||
.const y0 = 0
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.label screen = $400
|
||||
.label x = 4
|
||||
.label idx = 2
|
||||
.label e = 5
|
||||
@ -550,12 +550,12 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label screen = $400
|
||||
.const STAR = $51
|
||||
.const x0 = 0
|
||||
.const y0 = 0
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.label screen = $400
|
||||
.label x = 4
|
||||
.label idx = 2
|
||||
.label y = 5
|
||||
@ -743,12 +743,12 @@ Score: 1111
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label screen = $400
|
||||
.const STAR = $51
|
||||
.const x0 = 0
|
||||
.const y0 = 0
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.label screen = $400
|
||||
.label x = 4
|
||||
.label idx = 2
|
||||
.label y = 5
|
||||
|
@ -2,39 +2,40 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
@ -55,7 +56,6 @@
|
||||
.label SCREEN = $7c00
|
||||
// Plane with all pixels
|
||||
.label CHARSET8 = $8000
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
main: {
|
||||
// asm
|
||||
sei
|
||||
|
@ -1303,39 +1303,40 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
@ -1356,7 +1357,6 @@ Target platform is c64basic / MOS6502X
|
||||
.label SCREEN = $7c00
|
||||
// Plane with all pixels
|
||||
.label CHARSET8 = $8000
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -2093,39 +2093,40 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
@ -2146,7 +2147,6 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label SCREEN = $7c00
|
||||
// Plane with all pixels
|
||||
.label CHARSET8 = $8000
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -3015,39 +3015,40 @@ Score: 75375
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
@ -3068,7 +3069,6 @@ Score: 75375
|
||||
.label SCREEN = $7c00
|
||||
// Plane with all pixels
|
||||
.label CHARSET8 = $8000
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -2,36 +2,37 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane B Counter Control
|
||||
@ -43,7 +44,6 @@
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Plane with all pixels
|
||||
.label CHUNKY = $8000
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
main: {
|
||||
// asm
|
||||
sei
|
||||
|
@ -898,36 +898,37 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane B Counter Control
|
||||
@ -939,7 +940,6 @@ Target platform is c64basic / MOS6502X
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Plane with all pixels
|
||||
.label CHUNKY = $8000
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -1460,36 +1460,37 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane B Counter Control
|
||||
@ -1501,7 +1502,6 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Plane with all pixels
|
||||
.label CHUNKY = $8000
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -2148,36 +2148,37 @@ Score: 19882
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.const DTV_CHUNKY = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane B Counter Control
|
||||
@ -2189,7 +2190,6 @@ Score: 19882
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Plane with all pixels
|
||||
.label CHUNKY = $8000
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -2,9 +2,27 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Blitter Source A Start
|
||||
.label DTV_BLITTER_SRCA_LO = $d320
|
||||
.label DTV_BLITTER_SRCA_MI = $d321
|
||||
@ -46,28 +64,10 @@
|
||||
.label DTV_BLITTER_LEN_HI = $d339
|
||||
// Blitter Control
|
||||
.label DTV_BLITTER_CONTROL = $d33a
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// Blitter Transparency
|
||||
.label DTV_BLITTER_TRANSPARANCY = $d33b
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Blitter Control 2
|
||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.label SCREEN = $400
|
||||
// Controls the ALU operation
|
||||
.label DTV_BLITTER_ALU = $d33e
|
||||
|
@ -476,9 +476,27 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Blitter Source A Start
|
||||
.label DTV_BLITTER_SRCA_LO = $d320
|
||||
.label DTV_BLITTER_SRCA_MI = $d321
|
||||
@ -520,28 +538,10 @@ Target platform is c64basic / MOS6502X
|
||||
.label DTV_BLITTER_LEN_HI = $d339
|
||||
// Blitter Control
|
||||
.label DTV_BLITTER_CONTROL = $d33a
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// Blitter Transparency
|
||||
.label DTV_BLITTER_TRANSPARANCY = $d33b
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Blitter Control 2
|
||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.label SCREEN = $400
|
||||
// Controls the ALU operation
|
||||
.label DTV_BLITTER_ALU = $d33e
|
||||
@ -744,9 +744,27 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Blitter Source A Start
|
||||
.label DTV_BLITTER_SRCA_LO = $d320
|
||||
.label DTV_BLITTER_SRCA_MI = $d321
|
||||
@ -788,28 +806,10 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label DTV_BLITTER_LEN_HI = $d339
|
||||
// Blitter Control
|
||||
.label DTV_BLITTER_CONTROL = $d33a
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// Blitter Transparency
|
||||
.label DTV_BLITTER_TRANSPARANCY = $d33b
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Blitter Control 2
|
||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.label SCREEN = $400
|
||||
// Controls the ALU operation
|
||||
.label DTV_BLITTER_ALU = $d33e
|
||||
@ -1128,9 +1128,27 @@ Score: 291
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Blitter Source A Start
|
||||
.label DTV_BLITTER_SRCA_LO = $d320
|
||||
.label DTV_BLITTER_SRCA_MI = $d321
|
||||
@ -1172,28 +1190,10 @@ Score: 291
|
||||
.label DTV_BLITTER_LEN_HI = $d339
|
||||
// Blitter Control
|
||||
.label DTV_BLITTER_CONTROL = $d33a
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// Blitter Transparency
|
||||
.label DTV_BLITTER_TRANSPARANCY = $d33b
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Blitter Control 2
|
||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.label SCREEN = $400
|
||||
// Controls the ALU operation
|
||||
.label DTV_BLITTER_ALU = $d33e
|
||||
|
@ -1,9 +1,28 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.const SRCA_LEN = 9
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Blitter Source A Start
|
||||
.label DTV_BLITTER_SRCA_LO = $d320
|
||||
.label DTV_BLITTER_SRCA_MI = $d321
|
||||
@ -45,30 +64,11 @@
|
||||
.label DTV_BLITTER_LEN_HI = $d339
|
||||
// Blitter Control
|
||||
.label DTV_BLITTER_CONTROL = $d33a
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// Blitter Transparency
|
||||
.label DTV_BLITTER_TRANSPARANCY = $d33b
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Blitter Control 2
|
||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.label SCREEN = $400
|
||||
.const SRCA_LEN = 9
|
||||
// Controls the ALU operation
|
||||
.label DTV_BLITTER_ALU = $d33e
|
||||
main: {
|
||||
|
@ -513,9 +513,28 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.const SRCA_LEN = 9
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Blitter Source A Start
|
||||
.label DTV_BLITTER_SRCA_LO = $d320
|
||||
.label DTV_BLITTER_SRCA_MI = $d321
|
||||
@ -557,30 +576,11 @@ Target platform is c64basic / MOS6502X
|
||||
.label DTV_BLITTER_LEN_HI = $d339
|
||||
// Blitter Control
|
||||
.label DTV_BLITTER_CONTROL = $d33a
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// Blitter Transparency
|
||||
.label DTV_BLITTER_TRANSPARANCY = $d33b
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Blitter Control 2
|
||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.label SCREEN = $400
|
||||
.const SRCA_LEN = 9
|
||||
// Controls the ALU operation
|
||||
.label DTV_BLITTER_ALU = $d33e
|
||||
// @begin
|
||||
@ -841,9 +841,28 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.const SRCA_LEN = 9
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Blitter Source A Start
|
||||
.label DTV_BLITTER_SRCA_LO = $d320
|
||||
.label DTV_BLITTER_SRCA_MI = $d321
|
||||
@ -885,30 +904,11 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label DTV_BLITTER_LEN_HI = $d339
|
||||
// Blitter Control
|
||||
.label DTV_BLITTER_CONTROL = $d33a
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// Blitter Transparency
|
||||
.label DTV_BLITTER_TRANSPARANCY = $d33b
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Blitter Control 2
|
||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.label SCREEN = $400
|
||||
.const SRCA_LEN = 9
|
||||
// Controls the ALU operation
|
||||
.label DTV_BLITTER_ALU = $d33e
|
||||
// @begin
|
||||
@ -1264,9 +1264,28 @@ Score: 1553
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.const SRCA_LEN = 9
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Blitter Source A Start
|
||||
.label DTV_BLITTER_SRCA_LO = $d320
|
||||
.label DTV_BLITTER_SRCA_MI = $d321
|
||||
@ -1308,30 +1327,11 @@ Score: 1553
|
||||
.label DTV_BLITTER_LEN_HI = $d339
|
||||
// Blitter Control
|
||||
.label DTV_BLITTER_CONTROL = $d33a
|
||||
// Bit[0] Force Start Strobe when set
|
||||
.const DTV_BLIT_FORCE_START = 1
|
||||
// Bit[1] Source A Direction Positive when set
|
||||
.const DTV_BLIT_SRCA_FWD = 2
|
||||
// Bit[2] Source B Direction Positive when set
|
||||
.const DTV_BLIT_SRCB_FWD = 4
|
||||
// Bit[3] Destination Direction Positive when set
|
||||
.const DTV_BLIT_DEST_FWD = 8
|
||||
// Blitter Transparency
|
||||
.label DTV_BLITTER_TRANSPARANCY = $d33b
|
||||
// No transparancy
|
||||
// Bit[2]==Bit[1]==0: write in any case
|
||||
.const DTV_BLIT_TRANSPARANCY_NONE = 0
|
||||
.const DTV_BLIT_ADD = $30
|
||||
// Blitter Control 2
|
||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||
// Bit[0] Clear Blitter IRQ
|
||||
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||
// Bit[3] Destination Continue
|
||||
.const DTV_BLIT_DEST_CONT = 8
|
||||
// Bit[0] Busy when set (When reading)
|
||||
.const DTV_BLIT_STATUS_BUSY = 1
|
||||
.label SCREEN = $400
|
||||
.const SRCA_LEN = 9
|
||||
// Controls the ALU operation
|
||||
.label DTV_BLITTER_ALU = $d33e
|
||||
// @begin
|
||||
|
@ -2,16 +2,16 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
main: {
|
||||
|
@ -392,16 +392,16 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// @begin
|
||||
@ -557,16 +557,16 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// @begin
|
||||
@ -832,16 +832,16 @@ Score: 10174
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_BADLINE_OFF = $20
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// @begin
|
||||
|
@ -2,25 +2,82 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
.const KEY_CRSR_RIGHT = 2
|
||||
.const KEY_CRSR_DOWN = 7
|
||||
.const KEY_LSHIFT = $f
|
||||
.const KEY_RSHIFT = $34
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// Any shift is pressed
|
||||
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
|
||||
// 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||
.const PLANE_8BPP_CHUNKY = $20000
|
||||
// Plane with horisontal stripes
|
||||
.const PLANE_HORISONTAL = $30000
|
||||
// Plane with vertical stripes
|
||||
.const PLANE_VERTICAL = $32000
|
||||
// Plane with horisontal stripes every 2 pixels
|
||||
.const PLANE_HORISONTAL2 = $34000
|
||||
// Plane with vertical stripes every 2 pixels
|
||||
.const PLANE_VERTICAL2 = $36000
|
||||
// Plane with blank pixels
|
||||
.const PLANE_BLANK = $38000
|
||||
// Plane with all pixels
|
||||
.const PLANE_FULL = $3a000
|
||||
// Plane with all pixels
|
||||
.const PLANE_CHARSET8 = $3c000
|
||||
// The number of frames to use for a full blink cycle
|
||||
.const FORM_CURSOR_BLINK = $28
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
||||
// Number of form fields
|
||||
.const form_fields_cnt = $24
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The VIC-II MOS 6567/6569
|
||||
@ -33,15 +90,8 @@
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
@ -62,27 +112,9 @@
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.const KEY_CRSR_RIGHT = 2
|
||||
.const KEY_CRSR_DOWN = 7
|
||||
.const KEY_LSHIFT = $f
|
||||
.const KEY_RSHIFT = $34
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// Any shift is pressed
|
||||
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
|
||||
// VIC Screens
|
||||
.label VIC_SCREEN0 = $4000
|
||||
.label VIC_SCREEN1 = $4400
|
||||
@ -93,22 +125,6 @@
|
||||
.label VIC_CHARSET_ROM = $5800
|
||||
// VIC Bitmap
|
||||
.label VIC_BITMAP = $6000
|
||||
// 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||
.const PLANE_8BPP_CHUNKY = $20000
|
||||
// Plane with horisontal stripes
|
||||
.const PLANE_HORISONTAL = $30000
|
||||
// Plane with vertical stripes
|
||||
.const PLANE_VERTICAL = $32000
|
||||
// Plane with horisontal stripes every 2 pixels
|
||||
.const PLANE_HORISONTAL2 = $34000
|
||||
// Plane with vertical stripes every 2 pixels
|
||||
.const PLANE_VERTICAL2 = $36000
|
||||
// Plane with blank pixels
|
||||
.const PLANE_BLANK = $38000
|
||||
// Plane with all pixels
|
||||
.const PLANE_FULL = $3a000
|
||||
// Plane with all pixels
|
||||
.const PLANE_CHARSET8 = $3c000
|
||||
// Screen containing the FORM
|
||||
.label FORM_SCREEN = $400
|
||||
// Charset used for the FORM
|
||||
@ -148,22 +164,6 @@
|
||||
.label form_vic_bg2_lo = form_fields_val+$21
|
||||
.label form_vic_bg3_hi = form_fields_val+$22
|
||||
.label form_vic_bg3_lo = form_fields_val+$23
|
||||
// The number of frames to use for a full blink cycle
|
||||
.const FORM_CURSOR_BLINK = $28
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
||||
// Number of form fields
|
||||
.const form_fields_cnt = $24
|
||||
.label print_line_cursor = 7
|
||||
// Keyboard event buffer size. The number of events currently in the event buffer
|
||||
.label keyboard_events_size = 2
|
||||
|
@ -13034,25 +13034,82 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
.const KEY_CRSR_RIGHT = 2
|
||||
.const KEY_CRSR_DOWN = 7
|
||||
.const KEY_LSHIFT = $f
|
||||
.const KEY_RSHIFT = $34
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// Any shift is pressed
|
||||
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
|
||||
// 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||
.const PLANE_8BPP_CHUNKY = $20000
|
||||
// Plane with horisontal stripes
|
||||
.const PLANE_HORISONTAL = $30000
|
||||
// Plane with vertical stripes
|
||||
.const PLANE_VERTICAL = $32000
|
||||
// Plane with horisontal stripes every 2 pixels
|
||||
.const PLANE_HORISONTAL2 = $34000
|
||||
// Plane with vertical stripes every 2 pixels
|
||||
.const PLANE_VERTICAL2 = $36000
|
||||
// Plane with blank pixels
|
||||
.const PLANE_BLANK = $38000
|
||||
// Plane with all pixels
|
||||
.const PLANE_FULL = $3a000
|
||||
// Plane with all pixels
|
||||
.const PLANE_CHARSET8 = $3c000
|
||||
// The number of frames to use for a full blink cycle
|
||||
.const FORM_CURSOR_BLINK = $28
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
||||
// Number of form fields
|
||||
.const form_fields_cnt = $24
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The VIC-II MOS 6567/6569
|
||||
@ -13065,15 +13122,8 @@ Target platform is c64basic / MOS6502X
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
@ -13094,27 +13144,9 @@ Target platform is c64basic / MOS6502X
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.const KEY_CRSR_RIGHT = 2
|
||||
.const KEY_CRSR_DOWN = 7
|
||||
.const KEY_LSHIFT = $f
|
||||
.const KEY_RSHIFT = $34
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// Any shift is pressed
|
||||
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
|
||||
// VIC Screens
|
||||
.label VIC_SCREEN0 = $4000
|
||||
.label VIC_SCREEN1 = $4400
|
||||
@ -13125,22 +13157,6 @@ Target platform is c64basic / MOS6502X
|
||||
.label VIC_CHARSET_ROM = $5800
|
||||
// VIC Bitmap
|
||||
.label VIC_BITMAP = $6000
|
||||
// 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||
.const PLANE_8BPP_CHUNKY = $20000
|
||||
// Plane with horisontal stripes
|
||||
.const PLANE_HORISONTAL = $30000
|
||||
// Plane with vertical stripes
|
||||
.const PLANE_VERTICAL = $32000
|
||||
// Plane with horisontal stripes every 2 pixels
|
||||
.const PLANE_HORISONTAL2 = $34000
|
||||
// Plane with vertical stripes every 2 pixels
|
||||
.const PLANE_VERTICAL2 = $36000
|
||||
// Plane with blank pixels
|
||||
.const PLANE_BLANK = $38000
|
||||
// Plane with all pixels
|
||||
.const PLANE_FULL = $3a000
|
||||
// Plane with all pixels
|
||||
.const PLANE_CHARSET8 = $3c000
|
||||
// Screen containing the FORM
|
||||
.label FORM_SCREEN = $400
|
||||
// Charset used for the FORM
|
||||
@ -13180,22 +13196,6 @@ Target platform is c64basic / MOS6502X
|
||||
.label form_vic_bg2_lo = form_fields_val+$21
|
||||
.label form_vic_bg3_hi = form_fields_val+$22
|
||||
.label form_vic_bg3_lo = form_fields_val+$23
|
||||
// The number of frames to use for a full blink cycle
|
||||
.const FORM_CURSOR_BLINK = $28
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
||||
// Number of form fields
|
||||
.const form_fields_cnt = $24
|
||||
.label print_line_cursor = $36
|
||||
// Keyboard event buffer size. The number of events currently in the event buffer
|
||||
.label keyboard_events_size = $12
|
||||
@ -20337,25 +20337,82 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
.const KEY_CRSR_RIGHT = 2
|
||||
.const KEY_CRSR_DOWN = 7
|
||||
.const KEY_LSHIFT = $f
|
||||
.const KEY_RSHIFT = $34
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// Any shift is pressed
|
||||
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
|
||||
// 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||
.const PLANE_8BPP_CHUNKY = $20000
|
||||
// Plane with horisontal stripes
|
||||
.const PLANE_HORISONTAL = $30000
|
||||
// Plane with vertical stripes
|
||||
.const PLANE_VERTICAL = $32000
|
||||
// Plane with horisontal stripes every 2 pixels
|
||||
.const PLANE_HORISONTAL2 = $34000
|
||||
// Plane with vertical stripes every 2 pixels
|
||||
.const PLANE_VERTICAL2 = $36000
|
||||
// Plane with blank pixels
|
||||
.const PLANE_BLANK = $38000
|
||||
// Plane with all pixels
|
||||
.const PLANE_FULL = $3a000
|
||||
// Plane with all pixels
|
||||
.const PLANE_CHARSET8 = $3c000
|
||||
// The number of frames to use for a full blink cycle
|
||||
.const FORM_CURSOR_BLINK = $28
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
||||
// Number of form fields
|
||||
.const form_fields_cnt = $24
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The VIC-II MOS 6567/6569
|
||||
@ -20368,15 +20425,8 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
@ -20397,27 +20447,9 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.const KEY_CRSR_RIGHT = 2
|
||||
.const KEY_CRSR_DOWN = 7
|
||||
.const KEY_LSHIFT = $f
|
||||
.const KEY_RSHIFT = $34
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// Any shift is pressed
|
||||
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
|
||||
// VIC Screens
|
||||
.label VIC_SCREEN0 = $4000
|
||||
.label VIC_SCREEN1 = $4400
|
||||
@ -20428,22 +20460,6 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label VIC_CHARSET_ROM = $5800
|
||||
// VIC Bitmap
|
||||
.label VIC_BITMAP = $6000
|
||||
// 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||
.const PLANE_8BPP_CHUNKY = $20000
|
||||
// Plane with horisontal stripes
|
||||
.const PLANE_HORISONTAL = $30000
|
||||
// Plane with vertical stripes
|
||||
.const PLANE_VERTICAL = $32000
|
||||
// Plane with horisontal stripes every 2 pixels
|
||||
.const PLANE_HORISONTAL2 = $34000
|
||||
// Plane with vertical stripes every 2 pixels
|
||||
.const PLANE_VERTICAL2 = $36000
|
||||
// Plane with blank pixels
|
||||
.const PLANE_BLANK = $38000
|
||||
// Plane with all pixels
|
||||
.const PLANE_FULL = $3a000
|
||||
// Plane with all pixels
|
||||
.const PLANE_CHARSET8 = $3c000
|
||||
// Screen containing the FORM
|
||||
.label FORM_SCREEN = $400
|
||||
// Charset used for the FORM
|
||||
@ -20483,22 +20499,6 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label form_vic_bg2_lo = form_fields_val+$21
|
||||
.label form_vic_bg3_hi = form_fields_val+$22
|
||||
.label form_vic_bg3_lo = form_fields_val+$23
|
||||
// The number of frames to use for a full blink cycle
|
||||
.const FORM_CURSOR_BLINK = $28
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
||||
// Number of form fields
|
||||
.const form_fields_cnt = $24
|
||||
.label print_line_cursor = 7
|
||||
// Keyboard event buffer size. The number of events currently in the event buffer
|
||||
.label keyboard_events_size = 2
|
||||
@ -28202,25 +28202,82 @@ Score: 10118890
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
.const KEY_CRSR_RIGHT = 2
|
||||
.const KEY_CRSR_DOWN = 7
|
||||
.const KEY_LSHIFT = $f
|
||||
.const KEY_RSHIFT = $34
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// Any shift is pressed
|
||||
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
|
||||
// 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||
.const PLANE_8BPP_CHUNKY = $20000
|
||||
// Plane with horisontal stripes
|
||||
.const PLANE_HORISONTAL = $30000
|
||||
// Plane with vertical stripes
|
||||
.const PLANE_VERTICAL = $32000
|
||||
// Plane with horisontal stripes every 2 pixels
|
||||
.const PLANE_HORISONTAL2 = $34000
|
||||
// Plane with vertical stripes every 2 pixels
|
||||
.const PLANE_VERTICAL2 = $36000
|
||||
// Plane with blank pixels
|
||||
.const PLANE_BLANK = $38000
|
||||
// Plane with all pixels
|
||||
.const PLANE_FULL = $3a000
|
||||
// Plane with all pixels
|
||||
.const PLANE_CHARSET8 = $3c000
|
||||
// The number of frames to use for a full blink cycle
|
||||
.const FORM_CURSOR_BLINK = $28
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
||||
// Number of form fields
|
||||
.const form_fields_cnt = $24
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The VIC-II MOS 6567/6569
|
||||
@ -28233,15 +28290,8 @@ Score: 10118890
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
@ -28262,27 +28312,9 @@ Score: 10118890
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.const KEY_CRSR_RIGHT = 2
|
||||
.const KEY_CRSR_DOWN = 7
|
||||
.const KEY_LSHIFT = $f
|
||||
.const KEY_RSHIFT = $34
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// Any shift is pressed
|
||||
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
|
||||
// VIC Screens
|
||||
.label VIC_SCREEN0 = $4000
|
||||
.label VIC_SCREEN1 = $4400
|
||||
@ -28293,22 +28325,6 @@ Score: 10118890
|
||||
.label VIC_CHARSET_ROM = $5800
|
||||
// VIC Bitmap
|
||||
.label VIC_BITMAP = $6000
|
||||
// 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||
.const PLANE_8BPP_CHUNKY = $20000
|
||||
// Plane with horisontal stripes
|
||||
.const PLANE_HORISONTAL = $30000
|
||||
// Plane with vertical stripes
|
||||
.const PLANE_VERTICAL = $32000
|
||||
// Plane with horisontal stripes every 2 pixels
|
||||
.const PLANE_HORISONTAL2 = $34000
|
||||
// Plane with vertical stripes every 2 pixels
|
||||
.const PLANE_VERTICAL2 = $36000
|
||||
// Plane with blank pixels
|
||||
.const PLANE_BLANK = $38000
|
||||
// Plane with all pixels
|
||||
.const PLANE_FULL = $3a000
|
||||
// Plane with all pixels
|
||||
.const PLANE_CHARSET8 = $3c000
|
||||
// Screen containing the FORM
|
||||
.label FORM_SCREEN = $400
|
||||
// Charset used for the FORM
|
||||
@ -28348,22 +28364,6 @@ Score: 10118890
|
||||
.label form_vic_bg2_lo = form_fields_val+$21
|
||||
.label form_vic_bg3_hi = form_fields_val+$22
|
||||
.label form_vic_bg3_lo = form_fields_val+$23
|
||||
// The number of frames to use for a full blink cycle
|
||||
.const FORM_CURSOR_BLINK = $28
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
|
||||
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
||||
// Number of form fields
|
||||
.const form_fields_cnt = $24
|
||||
.label print_line_cursor = 7
|
||||
// Keyboard event buffer size. The number of events currently in the event buffer
|
||||
.label keyboard_events_size = 2
|
||||
|
@ -2,78 +2,31 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
.const BLUE = 6
|
||||
.const LIGHT_GREEN = $d
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
.label DTV_PLANEA_START_LO = $d03a
|
||||
.label DTV_PLANEA_START_MI = $d03b
|
||||
.label DTV_PLANEA_START_HI = $d045
|
||||
.label DTV_PLANEA_STEP = $d046
|
||||
.label DTV_PLANEA_MODULO_LO = $d038
|
||||
.label DTV_PLANEA_MODULO_HI = $d039
|
||||
// Linear Graphics Plane B Counter Control
|
||||
.label DTV_PLANEB_START_LO = $d049
|
||||
.label DTV_PLANEB_START_MI = $d04a
|
||||
.label DTV_PLANEB_START_HI = $d04b
|
||||
.label DTV_PLANEB_STEP = $d04c
|
||||
.label DTV_PLANEB_MODULO_LO = $d047
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Select memory bank where color data is fetched from (bits 11:0)
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.const KEY_3 = 8
|
||||
.const KEY_A = $a
|
||||
.const KEY_4 = $b
|
||||
@ -94,6 +47,53 @@
|
||||
.const KEY_SPACE = $3c
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
.label DTV_PLANEA_START_LO = $d03a
|
||||
.label DTV_PLANEA_START_MI = $d03b
|
||||
.label DTV_PLANEA_START_HI = $d045
|
||||
.label DTV_PLANEA_STEP = $d046
|
||||
.label DTV_PLANEA_MODULO_LO = $d038
|
||||
.label DTV_PLANEA_MODULO_HI = $d039
|
||||
// Linear Graphics Plane B Counter Control
|
||||
.label DTV_PLANEB_START_LO = $d049
|
||||
.label DTV_PLANEB_START_MI = $d04a
|
||||
.label DTV_PLANEB_START_HI = $d04b
|
||||
.label DTV_PLANEB_STEP = $d04c
|
||||
.label DTV_PLANEB_MODULO_LO = $d047
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Select memory bank where color data is fetched from (bits 11:0)
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.label print_char_cursor = 6
|
||||
.label print_line_cursor = 8
|
||||
main: {
|
||||
@ -1852,9 +1852,9 @@ mode_hicolstdchar: {
|
||||
// - 0: 4bpp CharData[3:0]
|
||||
// - 1: 4bpp CharData[7:4]
|
||||
mode_stdbitmap: {
|
||||
.const lines_cnt = 9
|
||||
.label SCREEN = $4000
|
||||
.label BITMAP = $6000
|
||||
.const lines_cnt = 9
|
||||
.label col2 = $11
|
||||
// Bitmap Colors
|
||||
.label ch = 4
|
||||
|
@ -11991,78 +11991,31 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
.const BLUE = 6
|
||||
.const LIGHT_GREEN = $d
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
.label DTV_PLANEA_START_LO = $d03a
|
||||
.label DTV_PLANEA_START_MI = $d03b
|
||||
.label DTV_PLANEA_START_HI = $d045
|
||||
.label DTV_PLANEA_STEP = $d046
|
||||
.label DTV_PLANEA_MODULO_LO = $d038
|
||||
.label DTV_PLANEA_MODULO_HI = $d039
|
||||
// Linear Graphics Plane B Counter Control
|
||||
.label DTV_PLANEB_START_LO = $d049
|
||||
.label DTV_PLANEB_START_MI = $d04a
|
||||
.label DTV_PLANEB_START_HI = $d04b
|
||||
.label DTV_PLANEB_STEP = $d04c
|
||||
.label DTV_PLANEB_MODULO_LO = $d047
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Select memory bank where color data is fetched from (bits 11:0)
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.const KEY_3 = 8
|
||||
.const KEY_A = $a
|
||||
.const KEY_4 = $b
|
||||
@ -12083,6 +12036,53 @@ Target platform is c64basic / MOS6502X
|
||||
.const KEY_SPACE = $3c
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
.label DTV_PLANEA_START_LO = $d03a
|
||||
.label DTV_PLANEA_START_MI = $d03b
|
||||
.label DTV_PLANEA_START_HI = $d045
|
||||
.label DTV_PLANEA_STEP = $d046
|
||||
.label DTV_PLANEA_MODULO_LO = $d038
|
||||
.label DTV_PLANEA_MODULO_HI = $d039
|
||||
// Linear Graphics Plane B Counter Control
|
||||
.label DTV_PLANEB_START_LO = $d049
|
||||
.label DTV_PLANEB_START_MI = $d04a
|
||||
.label DTV_PLANEB_START_HI = $d04b
|
||||
.label DTV_PLANEB_STEP = $d04c
|
||||
.label DTV_PLANEB_MODULO_LO = $d047
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Select memory bank where color data is fetched from (bits 11:0)
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
// The value of the DTV control register
|
||||
// DTV Graphics Mode
|
||||
// DTV Graphics Mode
|
||||
@ -15354,9 +15354,9 @@ mode_hicolstdchar: {
|
||||
// - 0: 4bpp CharData[3:0]
|
||||
// - 1: 4bpp CharData[7:4]
|
||||
mode_stdbitmap: {
|
||||
.const lines_cnt = 9
|
||||
.label SCREEN = $4000
|
||||
.label BITMAP = $6000
|
||||
.const lines_cnt = 9
|
||||
.label __4 = $f3
|
||||
.label __7 = $f6
|
||||
.label __8 = $f7
|
||||
@ -18971,78 +18971,31 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
.const BLUE = 6
|
||||
.const LIGHT_GREEN = $d
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
.label DTV_PLANEA_START_LO = $d03a
|
||||
.label DTV_PLANEA_START_MI = $d03b
|
||||
.label DTV_PLANEA_START_HI = $d045
|
||||
.label DTV_PLANEA_STEP = $d046
|
||||
.label DTV_PLANEA_MODULO_LO = $d038
|
||||
.label DTV_PLANEA_MODULO_HI = $d039
|
||||
// Linear Graphics Plane B Counter Control
|
||||
.label DTV_PLANEB_START_LO = $d049
|
||||
.label DTV_PLANEB_START_MI = $d04a
|
||||
.label DTV_PLANEB_START_HI = $d04b
|
||||
.label DTV_PLANEB_STEP = $d04c
|
||||
.label DTV_PLANEB_MODULO_LO = $d047
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Select memory bank where color data is fetched from (bits 11:0)
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.const KEY_3 = 8
|
||||
.const KEY_A = $a
|
||||
.const KEY_4 = $b
|
||||
@ -19063,6 +19016,53 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const KEY_SPACE = $3c
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
.label DTV_PLANEA_START_LO = $d03a
|
||||
.label DTV_PLANEA_START_MI = $d03b
|
||||
.label DTV_PLANEA_START_HI = $d045
|
||||
.label DTV_PLANEA_STEP = $d046
|
||||
.label DTV_PLANEA_MODULO_LO = $d038
|
||||
.label DTV_PLANEA_MODULO_HI = $d039
|
||||
// Linear Graphics Plane B Counter Control
|
||||
.label DTV_PLANEB_START_LO = $d049
|
||||
.label DTV_PLANEB_START_MI = $d04a
|
||||
.label DTV_PLANEB_START_HI = $d04b
|
||||
.label DTV_PLANEB_STEP = $d04c
|
||||
.label DTV_PLANEB_MODULO_LO = $d047
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Select memory bank where color data is fetched from (bits 11:0)
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.label print_char_cursor = 6
|
||||
.label print_line_cursor = 8
|
||||
// @begin
|
||||
@ -21960,9 +21960,9 @@ mode_hicolstdchar: {
|
||||
// - 0: 4bpp CharData[3:0]
|
||||
// - 1: 4bpp CharData[7:4]
|
||||
mode_stdbitmap: {
|
||||
.const lines_cnt = 9
|
||||
.label SCREEN = $4000
|
||||
.label BITMAP = $6000
|
||||
.const lines_cnt = 9
|
||||
.label col2 = $11
|
||||
// Bitmap Colors
|
||||
.label ch = 4
|
||||
@ -26031,78 +26031,31 @@ Score: 2307926
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.const VIC_MCM = $10
|
||||
.const VIC_CSEL = 8
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
.const BLUE = 6
|
||||
.const LIGHT_GREEN = $d
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
.const DTV_FEATURE_ENABLE = 1
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
.const DTV_LINEAR = 1
|
||||
.const DTV_BORDER_OFF = 2
|
||||
.const DTV_HIGHCOLOR = 4
|
||||
.const DTV_OVERSCAN = 8
|
||||
.const DTV_COLORRAM_OFF = $10
|
||||
.const DTV_CHUNKY = $40
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
.label DTV_PLANEA_START_LO = $d03a
|
||||
.label DTV_PLANEA_START_MI = $d03b
|
||||
.label DTV_PLANEA_START_HI = $d045
|
||||
.label DTV_PLANEA_STEP = $d046
|
||||
.label DTV_PLANEA_MODULO_LO = $d038
|
||||
.label DTV_PLANEA_MODULO_HI = $d039
|
||||
// Linear Graphics Plane B Counter Control
|
||||
.label DTV_PLANEB_START_LO = $d049
|
||||
.label DTV_PLANEB_START_MI = $d04a
|
||||
.label DTV_PLANEB_START_HI = $d04b
|
||||
.label DTV_PLANEB_STEP = $d04c
|
||||
.label DTV_PLANEB_MODULO_LO = $d047
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Select memory bank where color data is fetched from (bits 11:0)
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
.const DTV_COLOR_BANK_DEFAULT = $1d800
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.const KEY_3 = 8
|
||||
.const KEY_A = $a
|
||||
.const KEY_4 = $b
|
||||
@ -26123,6 +26076,53 @@ Score: 2307926
|
||||
.const KEY_SPACE = $3c
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label VIC_CONTROL2 = $d016
|
||||
.label VIC_MEMORY = $d018
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// Feature enables or disables the extra C64 DTV features
|
||||
.label DTV_FEATURE = $d03f
|
||||
// Controls the graphics modes of the C64 DTV
|
||||
.label DTV_CONTROL = $d03c
|
||||
// Defines colors for the 16 first colors ($00-$0f)
|
||||
.label DTV_PALETTE = $d200
|
||||
// Linear Graphics Plane A Counter Control
|
||||
.label DTV_PLANEA_START_LO = $d03a
|
||||
.label DTV_PLANEA_START_MI = $d03b
|
||||
.label DTV_PLANEA_START_HI = $d045
|
||||
.label DTV_PLANEA_STEP = $d046
|
||||
.label DTV_PLANEA_MODULO_LO = $d038
|
||||
.label DTV_PLANEA_MODULO_HI = $d039
|
||||
// Linear Graphics Plane B Counter Control
|
||||
.label DTV_PLANEB_START_LO = $d049
|
||||
.label DTV_PLANEB_START_MI = $d04a
|
||||
.label DTV_PLANEB_START_HI = $d04b
|
||||
.label DTV_PLANEB_STEP = $d04c
|
||||
.label DTV_PLANEB_MODULO_LO = $d047
|
||||
.label DTV_PLANEB_MODULO_HI = $d048
|
||||
// Select memory bank where color data is fetched from (bits 11:0)
|
||||
// Memory address of Color RAM is ColorBank*$400
|
||||
.label DTV_COLOR_BANK_LO = $d036
|
||||
.label DTV_COLOR_BANK_HI = $d037
|
||||
// Selects memory bank for normal VIC color mode and lower data for high color modes. (bits 5:0)
|
||||
// Memory address of VIC Graphics is GraphicsBank*$10000
|
||||
.label DTV_GRAPHICS_VIC_BANK = $d03d
|
||||
.label print_char_cursor = 6
|
||||
.label print_line_cursor = 8
|
||||
// @begin
|
||||
@ -28907,9 +28907,9 @@ mode_hicolstdchar: {
|
||||
// - 0: 4bpp CharData[3:0]
|
||||
// - 1: 4bpp CharData[7:4]
|
||||
mode_stdbitmap: {
|
||||
.const lines_cnt = 9
|
||||
.label SCREEN = $4000
|
||||
.label BITMAP = $6000
|
||||
.const lines_cnt = 9
|
||||
.label col2 = $11
|
||||
// Bitmap Colors
|
||||
.label ch = 4
|
||||
|
@ -3,14 +3,14 @@
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const min = $a
|
||||
.const max = $c8
|
||||
.label BGCOL = $d021
|
||||
.const sumw = min+max
|
||||
.const sumb = min+max
|
||||
.const midw = (sumw>>1)+1
|
||||
.const midb = (sumb>>1)+1
|
||||
.label SCREEN = $400
|
||||
.label BGCOL = $d021
|
||||
// SCREEN[0] = midw
|
||||
lda #midw
|
||||
sta SCREEN
|
||||
|
@ -223,14 +223,14 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const min = $a
|
||||
.const max = $c8
|
||||
.label BGCOL = $d021
|
||||
.const sumw = min+max
|
||||
.const sumb = min+max
|
||||
.const midw = (sumw>>1)+1
|
||||
.const midb = (sumb>>1)+1
|
||||
.label SCREEN = $400
|
||||
.label BGCOL = $d021
|
||||
// [4] *((const byte*) main::SCREEN) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
|
||||
lda #midw
|
||||
sta SCREEN
|
||||
@ -299,14 +299,14 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const min = $a
|
||||
.const max = $c8
|
||||
.label BGCOL = $d021
|
||||
.const sumw = min+max
|
||||
.const sumb = min+max
|
||||
.const midw = (sumw>>1)+1
|
||||
.const midb = (sumb>>1)+1
|
||||
.label SCREEN = $400
|
||||
.label BGCOL = $d021
|
||||
// [4] *((const byte*) main::SCREEN) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
|
||||
lda #midw
|
||||
sta SCREEN
|
||||
@ -400,14 +400,14 @@ Score: 46
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const min = $a
|
||||
.const max = $c8
|
||||
.label BGCOL = $d021
|
||||
.const sumw = min+max
|
||||
.const sumb = min+max
|
||||
.const midw = (sumw>>1)+1
|
||||
.const midb = (sumb>>1)+1
|
||||
.label SCREEN = $400
|
||||
.label BGCOL = $d021
|
||||
// SCREEN[0] = midw
|
||||
// [4] *((const byte*) main::SCREEN) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
|
||||
lda #midw
|
||||
|
@ -6,16 +6,16 @@
|
||||
.const CIA_TIMER_CONTROL_START = 1
|
||||
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
|
||||
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
|
||||
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
|
||||
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
|
||||
.const CLOCKS_PER_INIT = $12
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#2 timer A&B as one single 32-bit value
|
||||
.label CIA2_TIMER_AB = $dd04
|
||||
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
|
||||
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
|
||||
.const CLOCKS_PER_INIT = $12
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
main: {
|
||||
.label __1 = 9
|
||||
.label cyclecount = 9
|
||||
|
@ -752,16 +752,16 @@ Target platform is c64basic / MOS6502X
|
||||
.const CIA_TIMER_CONTROL_START = 1
|
||||
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
|
||||
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
|
||||
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
|
||||
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
|
||||
.const CLOCKS_PER_INIT = $12
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#2 timer A&B as one single 32-bit value
|
||||
.label CIA2_TIMER_AB = $dd04
|
||||
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
|
||||
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
|
||||
.const CLOCKS_PER_INIT = $12
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -1181,16 +1181,16 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const CIA_TIMER_CONTROL_START = 1
|
||||
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
|
||||
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
|
||||
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
|
||||
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
|
||||
.const CLOCKS_PER_INIT = $12
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#2 timer A&B as one single 32-bit value
|
||||
.label CIA2_TIMER_AB = $dd04
|
||||
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
|
||||
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
|
||||
.const CLOCKS_PER_INIT = $12
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -1696,16 +1696,16 @@ Score: 869
|
||||
.const CIA_TIMER_CONTROL_START = 1
|
||||
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
|
||||
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
|
||||
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
|
||||
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
|
||||
.const CLOCKS_PER_INIT = $12
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#2 timer A&B as one single 32-bit value
|
||||
.label CIA2_TIMER_AB = $dd04
|
||||
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
|
||||
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
|
||||
.const CLOCKS_PER_INIT = $12
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -6,13 +6,13 @@
|
||||
.const CIA_TIMER_CONTROL_START = 1
|
||||
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
|
||||
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#2 timer A&B as one single 32-bit value
|
||||
.label CIA2_TIMER_AB = $dd04
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
main: {
|
||||
// clock_start()
|
||||
// Reset & start the CIA#2 timer A+B
|
||||
|
@ -732,13 +732,13 @@ Target platform is c64basic / MOS6502X
|
||||
.const CIA_TIMER_CONTROL_START = 1
|
||||
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
|
||||
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#2 timer A&B as one single 32-bit value
|
||||
.label CIA2_TIMER_AB = $dd04
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -1119,13 +1119,13 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const CIA_TIMER_CONTROL_START = 1
|
||||
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
|
||||
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#2 timer A&B as one single 32-bit value
|
||||
.label CIA2_TIMER_AB = $dd04
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -1601,13 +1601,13 @@ Score: 455
|
||||
.const CIA_TIMER_CONTROL_START = 1
|
||||
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
|
||||
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#2 timer A&B as one single 32-bit value
|
||||
.label CIA2_TIMER_AB = $dd04
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -1,11 +1,11 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
.const DARK_GREY = $b
|
||||
.const BLACK = 0
|
||||
.label KERNEL_IRQ = $314
|
||||
.label BORDERCOL = $d020
|
||||
.label RASTER = $d012
|
||||
.const DARK_GREY = $b
|
||||
.const BLACK = 0
|
||||
.label irq_raster_next = 2
|
||||
__bbegin:
|
||||
// irq_raster_next = 0
|
||||
|
@ -188,11 +188,11 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DARK_GREY = $b
|
||||
.const BLACK = 0
|
||||
.label KERNEL_IRQ = $314
|
||||
.label BORDERCOL = $d020
|
||||
.label RASTER = $d012
|
||||
.const DARK_GREY = $b
|
||||
.const BLACK = 0
|
||||
.label irq_raster_next = 3
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -320,11 +320,11 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DARK_GREY = $b
|
||||
.const BLACK = 0
|
||||
.label KERNEL_IRQ = $314
|
||||
.label BORDERCOL = $d020
|
||||
.label RASTER = $d012
|
||||
.const DARK_GREY = $b
|
||||
.const BLACK = 0
|
||||
.label irq_raster_next = 2
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -473,11 +473,11 @@ Score: 159
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const DARK_GREY = $b
|
||||
.const BLACK = 0
|
||||
.label KERNEL_IRQ = $314
|
||||
.label BORDERCOL = $d020
|
||||
.label RASTER = $d012
|
||||
.const DARK_GREY = $b
|
||||
.const BLACK = 0
|
||||
.label irq_raster_next = 2
|
||||
// @begin
|
||||
__bbegin:
|
||||
|
@ -2,8 +2,8 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label SCREEN = $400
|
||||
.const b = 0
|
||||
.label SCREEN = $400
|
||||
main: {
|
||||
// SCREEN[0] = b
|
||||
lda #b
|
||||
|
@ -157,8 +157,8 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const b = 0
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -204,8 +204,8 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const b = 0
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -273,8 +273,8 @@ Score: 12
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const b = 0
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -3,9 +3,9 @@
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 0
|
||||
.const d = 0
|
||||
.label SCREEN = $400
|
||||
// SCREEN[0] = b
|
||||
lda #b
|
||||
sta SCREEN
|
||||
|
@ -120,9 +120,9 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 0
|
||||
.const d = 0
|
||||
.label SCREEN = $400
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
lda #b
|
||||
sta SCREEN
|
||||
@ -177,9 +177,9 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 0
|
||||
.const d = 0
|
||||
.label SCREEN = $400
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
lda #b
|
||||
sta SCREEN
|
||||
@ -247,9 +247,9 @@ Score: 26
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 0
|
||||
.const d = 0
|
||||
.label SCREEN = $400
|
||||
// SCREEN[0] = b
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
lda #b
|
||||
|
@ -3,10 +3,10 @@
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 'c'
|
||||
.const c = b+1
|
||||
.const d = c+1
|
||||
.label SCREEN = $400
|
||||
// SCREEN[0] = b
|
||||
lda #b
|
||||
sta SCREEN
|
||||
|
@ -147,10 +147,10 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 'c'
|
||||
.const c = b+1
|
||||
.const d = c+1
|
||||
.label SCREEN = $400
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
lda #b
|
||||
sta SCREEN
|
||||
@ -204,10 +204,10 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 'c'
|
||||
.const c = b+1
|
||||
.const d = c+1
|
||||
.label SCREEN = $400
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
lda #b
|
||||
sta SCREEN
|
||||
@ -276,10 +276,10 @@ Score: 24
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 'c'
|
||||
.const c = b+1
|
||||
.const d = c+1
|
||||
.label SCREEN = $400
|
||||
// SCREEN[0] = b
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
lda #b
|
||||
|
@ -3,9 +3,9 @@
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 3
|
||||
.const c = b+1
|
||||
.label SCREEN = $400
|
||||
// SCREEN[1,0] = c
|
||||
lda #c
|
||||
sta SCREEN
|
||||
|
@ -118,9 +118,9 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 3
|
||||
.const c = b+1
|
||||
.label SCREEN = $400
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::c#0 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
sta SCREEN
|
||||
@ -166,9 +166,9 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 3
|
||||
.const c = b+1
|
||||
.label SCREEN = $400
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::c#0 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
sta SCREEN
|
||||
@ -229,9 +229,9 @@ Score: 12
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 3
|
||||
.const c = b+1
|
||||
.label SCREEN = $400
|
||||
// SCREEN[1,0] = c
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::c#0 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
|
@ -3,8 +3,8 @@
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const c = 1+3
|
||||
.label SCREEN = $400
|
||||
// SCREEN[1,0] = c
|
||||
lda #c
|
||||
sta SCREEN
|
||||
|
@ -116,8 +116,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const c = 1+3
|
||||
.label SCREEN = $400
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::c#1 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
sta SCREEN
|
||||
@ -163,8 +163,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const c = 1+3
|
||||
.label SCREEN = $400
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::c#1 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
sta SCREEN
|
||||
@ -224,8 +224,8 @@ Score: 12
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const c = 1+3
|
||||
.label SCREEN = $400
|
||||
// SCREEN[1,0] = c
|
||||
// [4] *((const nomodify byte*) main::SCREEN) ← (const byte) main::c#1 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
|
@ -13,45 +13,15 @@
|
||||
.const BORDER_YPOS_BOTTOM = $fa
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label VIC_CONTROL = $d011
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.const LIGHT_BLUE = $e
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Max number of chars processed at once
|
||||
.const NUM_PROCESSING = 8
|
||||
// Distance value meaning not found
|
||||
@ -75,6 +45,36 @@
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $b
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $c
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label VIC_CONTROL = $d011
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Top of the heap used by malloc()
|
||||
.label HEAP_TOP = $a000
|
||||
// Head of the heap. Moved backward each malloc()
|
||||
|
@ -4588,45 +4588,15 @@ Target platform is c64basic / MOS6502X
|
||||
.const BORDER_YPOS_BOTTOM = $fa
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label VIC_CONTROL = $d011
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.const LIGHT_BLUE = $e
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Max number of chars processed at once
|
||||
.const NUM_PROCESSING = 8
|
||||
// Distance value meaning not found
|
||||
@ -4650,6 +4620,36 @@ Target platform is c64basic / MOS6502X
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $b
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $c
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label VIC_CONTROL = $d011
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Top of the heap used by malloc()
|
||||
.label HEAP_TOP = $a000
|
||||
// Head of the heap. Moved backward each malloc()
|
||||
@ -7578,45 +7578,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const BORDER_YPOS_BOTTOM = $fa
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label VIC_CONTROL = $d011
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.const LIGHT_BLUE = $e
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Max number of chars processed at once
|
||||
.const NUM_PROCESSING = 8
|
||||
// Distance value meaning not found
|
||||
@ -7640,6 +7610,36 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $b
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $c
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label VIC_CONTROL = $d011
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Top of the heap used by malloc()
|
||||
.label HEAP_TOP = $a000
|
||||
// Head of the heap. Moved backward each malloc()
|
||||
@ -10470,45 +10470,15 @@ Score: 1113354
|
||||
.const BORDER_YPOS_BOTTOM = $fa
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label VIC_CONTROL = $d011
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
.const LIGHT_BLUE = $e
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Max number of chars processed at once
|
||||
.const NUM_PROCESSING = 8
|
||||
// Distance value meaning not found
|
||||
@ -10532,6 +10502,36 @@ Score: 1113354
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $b
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $c
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label VIC_CONTROL = $d011
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Top of the heap used by malloc()
|
||||
.label HEAP_TOP = $a000
|
||||
// Head of the heap. Moved backward each malloc()
|
||||
|
@ -3,11 +3,11 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.label BGCOL = $d021
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.label SCREEN = $400
|
||||
main: {
|
||||
// *BGCOL = BLACK
|
||||
|
@ -505,11 +505,11 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.label BGCOL = $d021
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -690,11 +690,11 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.label BGCOL = $d021
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -994,11 +994,11 @@ Score: 797
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.label BGCOL = $d021
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
|
@ -2,22 +2,7 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label BASIC_SCREEN = $400
|
||||
// The BASIC charset
|
||||
.label BASIC_CHARSET = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// The number of different X-shifts
|
||||
.const BOB_SHIFTS_X = 4
|
||||
// The number of different Y-shifts
|
||||
@ -29,6 +14,21 @@
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The BASIC screen
|
||||
.label BASIC_SCREEN = $400
|
||||
// The BASIC charset
|
||||
.label BASIC_CHARSET = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// BOB charset ID of the next glyph to be added
|
||||
.label bob_charset_next_id = $11
|
||||
// Current index within the progress cursor (0-7)
|
||||
@ -422,9 +422,9 @@ renderBobCleanup: {
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = BOB_SCREEN
|
||||
.const c = 0
|
||||
.const num = $3e8
|
||||
.label str = BOB_SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $19
|
||||
lda #<str
|
||||
|
@ -4580,22 +4580,7 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label BASIC_SCREEN = $400
|
||||
// The BASIC charset
|
||||
.label BASIC_CHARSET = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// The number of different X-shifts
|
||||
.const BOB_SHIFTS_X = 4
|
||||
// The number of different Y-shifts
|
||||
@ -4607,6 +4592,21 @@ Target platform is c64basic / MOS6502X
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The BASIC screen
|
||||
.label BASIC_SCREEN = $400
|
||||
// The BASIC charset
|
||||
.label BASIC_CHARSET = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// BOB charset ID of the next glyph to be added
|
||||
.label bob_charset_next_id = $22
|
||||
// Current index within the progress cursor (0-7)
|
||||
@ -5246,9 +5246,9 @@ renderBobCleanup: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = BOB_SCREEN
|
||||
.const c = 0
|
||||
.const num = $3e8
|
||||
.label str = BOB_SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $13
|
||||
// [104] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
@ -6690,22 +6690,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label BASIC_SCREEN = $400
|
||||
// The BASIC charset
|
||||
.label BASIC_CHARSET = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// The number of different X-shifts
|
||||
.const BOB_SHIFTS_X = 4
|
||||
// The number of different Y-shifts
|
||||
@ -6717,6 +6702,21 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The BASIC screen
|
||||
.label BASIC_SCREEN = $400
|
||||
// The BASIC charset
|
||||
.label BASIC_CHARSET = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// BOB charset ID of the next glyph to be added
|
||||
.label bob_charset_next_id = $11
|
||||
// Current index within the progress cursor (0-7)
|
||||
@ -7312,9 +7312,9 @@ renderBobCleanup: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = BOB_SCREEN
|
||||
.const c = 0
|
||||
.const num = $3e8
|
||||
.label str = BOB_SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $19
|
||||
// [104] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
@ -9011,22 +9011,7 @@ Score: 3582851
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label BASIC_SCREEN = $400
|
||||
// The BASIC charset
|
||||
.label BASIC_CHARSET = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// The number of different X-shifts
|
||||
.const BOB_SHIFTS_X = 4
|
||||
// The number of different Y-shifts
|
||||
@ -9038,6 +9023,21 @@ Score: 3582851
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The BASIC screen
|
||||
.label BASIC_SCREEN = $400
|
||||
// The BASIC charset
|
||||
.label BASIC_CHARSET = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// BOB charset ID of the next glyph to be added
|
||||
.label bob_charset_next_id = $11
|
||||
// Current index within the progress cursor (0-7)
|
||||
@ -9604,9 +9604,9 @@ renderBobCleanup: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = BOB_SCREEN
|
||||
.const c = 0
|
||||
.const num = $3e8
|
||||
.label str = BOB_SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $19
|
||||
// [104] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
|
@ -2,22 +2,7 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label SCREEN_BASIC = $400
|
||||
// The BASIC charset
|
||||
.label CHARSET_BASIC = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// The number of different X-shifts
|
||||
.const BOB_SHIFTS_X = 4
|
||||
// The number of different Y-shifts
|
||||
@ -29,6 +14,21 @@
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The BASIC screen
|
||||
.label SCREEN_BASIC = $400
|
||||
// The BASIC charset
|
||||
.label CHARSET_BASIC = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
.label COS = SIN+$40
|
||||
// BOB charset ID of the next glyph to be added
|
||||
.label bob_charset_next_id = 9
|
||||
@ -481,9 +481,9 @@ renderBobCleanup: {
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = BOB_SCREEN
|
||||
.const c = 0
|
||||
.const num = $3e8
|
||||
.label str = BOB_SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $c
|
||||
lda #<str
|
||||
|
@ -4932,22 +4932,7 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label SCREEN_BASIC = $400
|
||||
// The BASIC charset
|
||||
.label CHARSET_BASIC = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// The number of different X-shifts
|
||||
.const BOB_SHIFTS_X = 4
|
||||
// The number of different Y-shifts
|
||||
@ -4959,6 +4944,21 @@ Target platform is c64basic / MOS6502X
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The BASIC screen
|
||||
.label SCREEN_BASIC = $400
|
||||
// The BASIC charset
|
||||
.label CHARSET_BASIC = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
.label COS = SIN+$40
|
||||
// BOB charset ID of the next glyph to be added
|
||||
.label bob_charset_next_id = $1c
|
||||
@ -5778,9 +5778,9 @@ renderBobCleanup: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = BOB_SCREEN
|
||||
.const c = 0
|
||||
.const num = $3e8
|
||||
.label str = BOB_SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $d
|
||||
// [138] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
@ -7416,22 +7416,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label SCREEN_BASIC = $400
|
||||
// The BASIC charset
|
||||
.label CHARSET_BASIC = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// The number of different X-shifts
|
||||
.const BOB_SHIFTS_X = 4
|
||||
// The number of different Y-shifts
|
||||
@ -7443,6 +7428,21 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The BASIC screen
|
||||
.label SCREEN_BASIC = $400
|
||||
// The BASIC charset
|
||||
.label CHARSET_BASIC = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
.label COS = SIN+$40
|
||||
// BOB charset ID of the next glyph to be added
|
||||
.label bob_charset_next_id = 9
|
||||
@ -8148,9 +8148,9 @@ renderBobCleanup: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = BOB_SCREEN
|
||||
.const c = 0
|
||||
.const num = $3e8
|
||||
.label str = BOB_SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $c
|
||||
// [138] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
@ -9935,22 +9935,7 @@ Score: 3510799
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label SCREEN_BASIC = $400
|
||||
// The BASIC charset
|
||||
.label CHARSET_BASIC = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
// The number of different X-shifts
|
||||
.const BOB_SHIFTS_X = 4
|
||||
// The number of different Y-shifts
|
||||
@ -9962,6 +9947,21 @@ Score: 3510799
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D018 = $d018
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// The BASIC screen
|
||||
.label SCREEN_BASIC = $400
|
||||
// The BASIC charset
|
||||
.label CHARSET_BASIC = $1000
|
||||
// The BOB screen
|
||||
.label BOB_SCREEN = $2800
|
||||
// The BOB charset
|
||||
.label BOB_CHARSET = $2000
|
||||
.label COS = SIN+$40
|
||||
// BOB charset ID of the next glyph to be added
|
||||
.label bob_charset_next_id = 9
|
||||
@ -10633,9 +10633,9 @@ renderBobCleanup: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = BOB_SCREEN
|
||||
.const c = 0
|
||||
.const num = $3e8
|
||||
.label str = BOB_SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $c
|
||||
// [138] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
|
@ -2,6 +2,18 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const KEY_SPACE = $3c
|
||||
// The number of BOBs to render
|
||||
.const NUM_BOBS = $10
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
@ -10,22 +22,10 @@
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label SCREEN = $400
|
||||
// The number of BOBs to render
|
||||
.const NUM_BOBS = $10
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label COS = SIN+$40
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR = SCREEN+$3f8
|
||||
@ -587,9 +587,9 @@ init: {
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = SCREEN
|
||||
.const c = ' '
|
||||
.const num = $3e8
|
||||
.label str = SCREEN
|
||||
.label end = str+num
|
||||
.label dst = 5
|
||||
lda #<str
|
||||
|
@ -3219,6 +3219,18 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const KEY_SPACE = $3c
|
||||
// The number of BOBs to render
|
||||
.const NUM_BOBS = $10
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
@ -3227,22 +3239,10 @@ Target platform is c64basic / MOS6502X
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label SCREEN = $400
|
||||
// The number of BOBs to render
|
||||
.const NUM_BOBS = $10
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label COS = SIN+$40
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR = SCREEN+$3f8
|
||||
@ -4308,9 +4308,9 @@ init: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = SCREEN
|
||||
.const c = ' '
|
||||
.const num = $3e8
|
||||
.label str = SCREEN
|
||||
.label end = str+num
|
||||
.label dst = $10
|
||||
// [187] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
@ -5186,6 +5186,18 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const KEY_SPACE = $3c
|
||||
// The number of BOBs to render
|
||||
.const NUM_BOBS = $10
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
@ -5194,22 +5206,10 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label SCREEN = $400
|
||||
// The number of BOBs to render
|
||||
.const NUM_BOBS = $10
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label COS = SIN+$40
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR = SCREEN+$3f8
|
||||
@ -6108,9 +6108,9 @@ init: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = SCREEN
|
||||
.const c = ' '
|
||||
.const num = $3e8
|
||||
.label str = SCREEN
|
||||
.label end = str+num
|
||||
.label dst = 5
|
||||
// [187] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
@ -7157,6 +7157,18 @@ Score: 74020
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const KEY_SPACE = $3c
|
||||
// The number of BOBs to render
|
||||
.const NUM_BOBS = $10
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
@ -7165,22 +7177,10 @@ Score: 74020
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label D011 = $d011
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const KEY_SPACE = $3c
|
||||
// The BASIC screen
|
||||
.label SCREEN = $400
|
||||
// The number of BOBs to render
|
||||
.const NUM_BOBS = $10
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.label COS = SIN+$40
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR = SCREEN+$3f8
|
||||
@ -8045,9 +8045,9 @@ init: {
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
memset: {
|
||||
.label str = SCREEN
|
||||
.const c = ' '
|
||||
.const num = $3e8
|
||||
.label str = SCREEN
|
||||
.label end = str+num
|
||||
.label dst = 5
|
||||
// [187] phi from memset to memset::@1 [phi:memset->memset::@1]
|
||||
|
@ -2,17 +2,10 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const WHITE = 1
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.const MOVE_TO = 0
|
||||
.const SPLINE_TO = 1
|
||||
.const LINE_TO = 2
|
||||
@ -21,6 +14,13 @@
|
||||
.const OFFSET_STRUCT_SEGMENT_TO = 1
|
||||
.const OFFSET_STRUCT_SEGMENT_VIA = 5
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.label COS = SIN+$40
|
||||
main: {
|
||||
.const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40
|
||||
|
@ -5228,17 +5228,10 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const WHITE = 1
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.const MOVE_TO = 0
|
||||
.const SPLINE_TO = 1
|
||||
.const LINE_TO = 2
|
||||
@ -5247,6 +5240,13 @@ Target platform is c64basic / MOS6502X
|
||||
.const OFFSET_STRUCT_SEGMENT_TO = 1
|
||||
.const OFFSET_STRUCT_SEGMENT_VIA = 5
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.label COS = SIN+$40
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -8702,17 +8702,10 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const WHITE = 1
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.const MOVE_TO = 0
|
||||
.const SPLINE_TO = 1
|
||||
.const LINE_TO = 2
|
||||
@ -8721,6 +8714,13 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const OFFSET_STRUCT_SEGMENT_TO = 1
|
||||
.const OFFSET_STRUCT_SEGMENT_VIA = 5
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.label COS = SIN+$40
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -11910,17 +11910,10 @@ Score: 674154
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.const WHITE = 1
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.const MOVE_TO = 0
|
||||
.const SPLINE_TO = 1
|
||||
.const LINE_TO = 2
|
||||
@ -11929,6 +11922,13 @@ Score: 674154
|
||||
.const OFFSET_STRUCT_SEGMENT_TO = 1
|
||||
.const OFFSET_STRUCT_SEGMENT_VIA = 5
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.label COS = SIN+$40
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
|
@ -4,6 +4,17 @@
|
||||
.pc = $80d "Program"
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = 7
|
||||
.const WHITE = 1
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
@ -16,32 +27,21 @@
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = 7
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the KERNAL serves IRQ interrupts
|
||||
.label KERNEL_IRQ = $314
|
||||
.const WHITE = 1
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.label CHARSET_DEFAULT = $1000
|
||||
.label SPRITES = $3000
|
||||
.label SCREEN = $400
|
||||
// The high-value table
|
||||
.label XMOVEMENT_HI = XMOVEMENT+$100
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR = $400+$3f8
|
||||
.const toSpritePtr1_return = SPRITES/$40
|
||||
.label plex_show_idx = $d
|
||||
.label plex_sprite_idx = $e
|
||||
.label plex_sprite_msb = $f
|
||||
|
@ -3572,6 +3572,17 @@ Target platform is c64basic / MOS6502X
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = 7
|
||||
.const WHITE = 1
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
@ -3584,32 +3595,21 @@ Target platform is c64basic / MOS6502X
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = 7
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the KERNAL serves IRQ interrupts
|
||||
.label KERNEL_IRQ = $314
|
||||
.const WHITE = 1
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.label CHARSET_DEFAULT = $1000
|
||||
.label SPRITES = $3000
|
||||
.label SCREEN = $400
|
||||
// The high-value table
|
||||
.label XMOVEMENT_HI = XMOVEMENT+$100
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR = $400+$3f8
|
||||
.const toSpritePtr1_return = SPRITES/$40
|
||||
.label plex_show_idx = $2b
|
||||
.label plex_sprite_idx = $2c
|
||||
.label plex_sprite_msb = $2d
|
||||
@ -5483,6 +5483,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = 7
|
||||
.const WHITE = 1
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
@ -5495,32 +5506,21 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = 7
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the KERNAL serves IRQ interrupts
|
||||
.label KERNEL_IRQ = $314
|
||||
.const WHITE = 1
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.label CHARSET_DEFAULT = $1000
|
||||
.label SPRITES = $3000
|
||||
.label SCREEN = $400
|
||||
// The high-value table
|
||||
.label XMOVEMENT_HI = XMOVEMENT+$100
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR = $400+$3f8
|
||||
.const toSpritePtr1_return = SPRITES/$40
|
||||
.label plex_show_idx = $d
|
||||
.label plex_sprite_idx = $e
|
||||
.label plex_sprite_msb = $f
|
||||
@ -7431,6 +7431,17 @@ Score: 159127
|
||||
// Global Constants & labels
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = 7
|
||||
.const WHITE = 1
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
@ -7443,32 +7454,21 @@ Score: 159127
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
||||
.const PROCPORT_RAM_CHARROM = 1
|
||||
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = 7
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The vector used when the KERNAL serves IRQ interrupts
|
||||
.label KERNEL_IRQ = $314
|
||||
.const WHITE = 1
|
||||
// The number of sprites in the multiplexer
|
||||
.const PLEX_COUNT = $20
|
||||
.label CHARSET_DEFAULT = $1000
|
||||
.label SPRITES = $3000
|
||||
.label SCREEN = $400
|
||||
// The high-value table
|
||||
.label XMOVEMENT_HI = XMOVEMENT+$100
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR = $400+$3f8
|
||||
.const toSpritePtr1_return = SPRITES/$40
|
||||
.label plex_show_idx = $d
|
||||
.label plex_sprite_idx = $e
|
||||
.label plex_sprite_msb = $f
|
||||
|
@ -5,6 +5,21 @@
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
// The line of the first IRQ
|
||||
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
@ -19,16 +34,10 @@
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
@ -37,8 +46,6 @@
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
@ -51,14 +58,7 @@
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
// The line of the first IRQ
|
||||
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label SIN_SPRITE = $2800
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label render_screen_showing = 5
|
||||
.label irq_raster_next = 6
|
||||
.label irq_sprite_ypos = 7
|
||||
|
@ -1689,6 +1689,21 @@ Target platform is c64basic / MOS6502X
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
// The line of the first IRQ
|
||||
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
@ -1703,16 +1718,10 @@ Target platform is c64basic / MOS6502X
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
@ -1721,8 +1730,6 @@ Target platform is c64basic / MOS6502X
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
@ -1735,14 +1742,7 @@ Target platform is c64basic / MOS6502X
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
// The line of the first IRQ
|
||||
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label SIN_SPRITE = $2800
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label render_screen_showing = $a
|
||||
.label irq_raster_next = $b
|
||||
.label irq_sprite_ypos = $c
|
||||
@ -2567,6 +2567,21 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
// The line of the first IRQ
|
||||
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
@ -2581,16 +2596,10 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
@ -2599,8 +2608,6 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
@ -2613,14 +2620,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
// The line of the first IRQ
|
||||
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label SIN_SPRITE = $2800
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label render_screen_showing = 5
|
||||
.label irq_raster_next = 6
|
||||
.label irq_sprite_ypos = 7
|
||||
@ -3547,6 +3547,21 @@ Score: 11662
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
// The line of the first IRQ
|
||||
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
@ -3561,16 +3576,10 @@ Score: 11662
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
@ -3579,8 +3588,6 @@ Score: 11662
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
@ -3593,14 +3600,7 @@ Score: 11662
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
// The line of the first IRQ
|
||||
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.label SIN_SPRITE = $2800
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label render_screen_showing = 5
|
||||
.label irq_raster_next = 6
|
||||
.label irq_sprite_ypos = 7
|
||||
|
@ -8,53 +8,17 @@
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// SID Channel Control Register Noise Waveform
|
||||
.const SID_CONTROL_NOISE = $80
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The SID MOS 6581/8580
|
||||
.label SID = $d400
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#1 Interrupt for reading in ASM
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const RED = 2
|
||||
@ -77,18 +41,6 @@
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
.label PLAYFIELD_SCREEN_2 = $2c00
|
||||
// Screen Sprite pointers on screen 1
|
||||
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS
|
||||
// Screen Sprite pointers on screen 2
|
||||
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
|
||||
// Address of the sprites covering the playfield
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The size of the playfield
|
||||
.const PLAYFIELD_LINES = $16
|
||||
.const PLAYFIELD_COLS = $a
|
||||
@ -115,6 +67,54 @@
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The SID MOS 6581/8580
|
||||
.label SID = $d400
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#1 Interrupt for reading in ASM
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
.label PLAYFIELD_SCREEN_2 = $2c00
|
||||
// Screen Sprite pointers on screen 1
|
||||
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS
|
||||
// Screen Sprite pointers on screen 2
|
||||
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
|
||||
// Address of the sprites covering the playfield
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
.label render_screen_showing = $26
|
||||
.label score_bcd = $27
|
||||
.label irq_raster_next = $2b
|
||||
@ -341,10 +341,10 @@ render_screen_swap: {
|
||||
}
|
||||
// Show the current score
|
||||
render_score: {
|
||||
.label score_bytes = score_bcd
|
||||
.const score_offset = $28*5+$1c
|
||||
.const lines_offset = $28*1+$16
|
||||
.const level_offset = $28*$13+$1f
|
||||
.label score_bytes = score_bcd
|
||||
.label screen = 7
|
||||
// if(render_screen_render==0)
|
||||
lda.z render_screen_render
|
||||
|
@ -11628,53 +11628,17 @@ Target platform is c64basic / MOS6502X
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// SID Channel Control Register Noise Waveform
|
||||
.const SID_CONTROL_NOISE = $80
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The SID MOS 6581/8580
|
||||
.label SID = $d400
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#1 Interrupt for reading in ASM
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const RED = 2
|
||||
@ -11697,18 +11661,6 @@ Target platform is c64basic / MOS6502X
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
.label PLAYFIELD_SCREEN_2 = $2c00
|
||||
// Screen Sprite pointers on screen 1
|
||||
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS
|
||||
// Screen Sprite pointers on screen 2
|
||||
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
|
||||
// Address of the sprites covering the playfield
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The size of the playfield
|
||||
.const PLAYFIELD_LINES = $16
|
||||
.const PLAYFIELD_COLS = $a
|
||||
@ -11735,6 +11687,54 @@ Target platform is c64basic / MOS6502X
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The SID MOS 6581/8580
|
||||
.label SID = $d400
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#1 Interrupt for reading in ASM
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
.label PLAYFIELD_SCREEN_2 = $2c00
|
||||
// Screen Sprite pointers on screen 1
|
||||
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS
|
||||
// Screen Sprite pointers on screen 2
|
||||
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
|
||||
// Address of the sprites covering the playfield
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
.label render_screen_showing = $70
|
||||
.label score_bcd = $71
|
||||
.label irq_raster_next = $75
|
||||
@ -12226,10 +12226,10 @@ render_screen_swap: {
|
||||
// render_score
|
||||
// Show the current score
|
||||
render_score: {
|
||||
.label score_bytes = score_bcd
|
||||
.const score_offset = $28*5+$1c
|
||||
.const lines_offset = $28*1+$16
|
||||
.const level_offset = $28*$13+$1f
|
||||
.label score_bytes = score_bcd
|
||||
.label screen = 5
|
||||
// [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1
|
||||
lda.z render_screen_render
|
||||
@ -16778,53 +16778,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// SID Channel Control Register Noise Waveform
|
||||
.const SID_CONTROL_NOISE = $80
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The SID MOS 6581/8580
|
||||
.label SID = $d400
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#1 Interrupt for reading in ASM
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const RED = 2
|
||||
@ -16847,18 +16811,6 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
.label PLAYFIELD_SCREEN_2 = $2c00
|
||||
// Screen Sprite pointers on screen 1
|
||||
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS
|
||||
// Screen Sprite pointers on screen 2
|
||||
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
|
||||
// Address of the sprites covering the playfield
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The size of the playfield
|
||||
.const PLAYFIELD_LINES = $16
|
||||
.const PLAYFIELD_COLS = $a
|
||||
@ -16885,6 +16837,54 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The SID MOS 6581/8580
|
||||
.label SID = $d400
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#1 Interrupt for reading in ASM
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
.label PLAYFIELD_SCREEN_2 = $2c00
|
||||
// Screen Sprite pointers on screen 1
|
||||
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS
|
||||
// Screen Sprite pointers on screen 2
|
||||
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
|
||||
// Address of the sprites covering the playfield
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
.label render_screen_showing = $26
|
||||
.label score_bcd = $27
|
||||
.label irq_raster_next = $2b
|
||||
@ -17351,10 +17351,10 @@ render_screen_swap: {
|
||||
// render_score
|
||||
// Show the current score
|
||||
render_score: {
|
||||
.label score_bytes = score_bcd
|
||||
.const score_offset = $28*5+$1c
|
||||
.const lines_offset = $28*1+$16
|
||||
.const level_offset = $28*$13+$1f
|
||||
.label score_bytes = score_bcd
|
||||
.label screen = 7
|
||||
// [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1
|
||||
lda.z render_screen_render
|
||||
@ -22125,53 +22125,17 @@ Score: 3348915
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_ECM = $40
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the VICII IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// SID Channel Control Register Noise Waveform
|
||||
.const SID_CONTROL_NOISE = $80
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
||||
.const PROCPORT_RAM_IO = 5
|
||||
// The SID MOS 6581/8580
|
||||
.label SID = $d400
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#1 Interrupt for reading in ASM
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const RED = 2
|
||||
@ -22194,18 +22158,6 @@ Score: 3348915
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
.label PLAYFIELD_SCREEN_2 = $2c00
|
||||
// Screen Sprite pointers on screen 1
|
||||
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS
|
||||
// Screen Sprite pointers on screen 2
|
||||
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
|
||||
// Address of the sprites covering the playfield
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The size of the playfield
|
||||
.const PLAYFIELD_LINES = $16
|
||||
.const PLAYFIELD_COLS = $a
|
||||
@ -22232,6 +22184,54 @@ Score: 3348915
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES/$40
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_COLS = $d027
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// The SID MOS 6581/8580
|
||||
.label SID = $d400
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The CIA#1: keyboard matrix, joystick #1/#2
|
||||
.label CIA1 = $dc00
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
// CIA#1 Interrupt for reading in ASM
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// Address of the first screen
|
||||
.label PLAYFIELD_SCREEN_1 = $400
|
||||
// Address of the second screen
|
||||
.label PLAYFIELD_SCREEN_2 = $2c00
|
||||
// Screen Sprite pointers on screen 1
|
||||
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS
|
||||
// Screen Sprite pointers on screen 2
|
||||
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
|
||||
// Address of the sprites covering the playfield
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
.label render_screen_showing = $26
|
||||
.label score_bcd = $27
|
||||
.label irq_raster_next = $2b
|
||||
@ -22633,10 +22633,10 @@ render_screen_swap: {
|
||||
// render_score
|
||||
// Show the current score
|
||||
render_score: {
|
||||
.label score_bytes = score_bcd
|
||||
.const score_offset = $28*5+$1c
|
||||
.const lines_offset = $28*1+$16
|
||||
.const level_offset = $28*$13+$1f
|
||||
.label score_bytes = score_bcd
|
||||
.label screen = 7
|
||||
// if(render_screen_render==0)
|
||||
// [74] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1
|
||||
|
@ -8,15 +8,15 @@
|
||||
.segmentdef Data [startAfter="Code", min=$8200, max=$bdff]
|
||||
.segmentdef Stack [min=$be00, max=$beff, fill]
|
||||
.segmentdef Zeropage [min=$bf00, max=$bfff, fill]
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const JMP = $4c
|
||||
.const NOP = $ea
|
||||
.label RASTER = $d012
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BGCOL = $d021
|
||||
.label COLS = $d800
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const JMP = $4c
|
||||
.const NOP = $ea
|
||||
__bbegin:
|
||||
.segment Code
|
||||
main: {
|
||||
|
@ -506,15 +506,15 @@ Target platform is custom / MOS6502X
|
||||
.segmentdef Stack [min=$be00, max=$beff, fill]
|
||||
.segmentdef Zeropage [min=$bf00, max=$bfff, fill]
|
||||
// Global Constants & labels
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const JMP = $4c
|
||||
.const NOP = $ea
|
||||
.label RASTER = $d012
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BGCOL = $d021
|
||||
.label COLS = $d800
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const JMP = $4c
|
||||
.const NOP = $ea
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -799,15 +799,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.segmentdef Stack [min=$be00, max=$beff, fill]
|
||||
.segmentdef Zeropage [min=$bf00, max=$bfff, fill]
|
||||
// Global Constants & labels
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const JMP = $4c
|
||||
.const NOP = $ea
|
||||
.label RASTER = $d012
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BGCOL = $d021
|
||||
.label COLS = $d800
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const JMP = $4c
|
||||
.const NOP = $ea
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -1136,15 +1136,15 @@ Score: 1600
|
||||
.segmentdef Stack [min=$be00, max=$beff, fill]
|
||||
.segmentdef Zeropage [min=$bf00, max=$bfff, fill]
|
||||
// Global Constants & labels
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const JMP = $4c
|
||||
.const NOP = $ea
|
||||
.label RASTER = $d012
|
||||
.label VIC_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BGCOL = $d021
|
||||
.label COLS = $d800
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const JMP = $4c
|
||||
.const NOP = $ea
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
|
@ -2,11 +2,11 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label SCREEN = $400
|
||||
.const LINE_LEN = $28
|
||||
.const MARGIN_TOP = 4
|
||||
.const MARGIN_LEFT = 4
|
||||
.const OFFSET = $28*5+5
|
||||
.label SCREEN = $400
|
||||
.label BODY1 = SCREEN+MARGIN_TOP*LINE_LEN+MARGIN_LEFT
|
||||
.label BODY2 = SCREEN+OFFSET
|
||||
main: {
|
||||
|
@ -85,11 +85,11 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const LINE_LEN = $28
|
||||
.const MARGIN_TOP = 4
|
||||
.const MARGIN_LEFT = 4
|
||||
.const OFFSET = $28*5+5
|
||||
.label SCREEN = $400
|
||||
.label BODY1 = SCREEN+MARGIN_TOP*LINE_LEN+MARGIN_LEFT
|
||||
.label BODY2 = SCREEN+OFFSET
|
||||
// @begin
|
||||
@ -141,11 +141,11 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const LINE_LEN = $28
|
||||
.const MARGIN_TOP = 4
|
||||
.const MARGIN_LEFT = 4
|
||||
.const OFFSET = $28*5+5
|
||||
.label SCREEN = $400
|
||||
.label BODY1 = SCREEN+MARGIN_TOP*LINE_LEN+MARGIN_LEFT
|
||||
.label BODY2 = SCREEN+OFFSET
|
||||
// @begin
|
||||
@ -224,11 +224,11 @@ Score: 16
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const LINE_LEN = $28
|
||||
.const MARGIN_TOP = 4
|
||||
.const MARGIN_LEFT = 4
|
||||
.const OFFSET = $28*5+5
|
||||
.label SCREEN = $400
|
||||
.label BODY1 = SCREEN+MARGIN_TOP*LINE_LEN+MARGIN_LEFT
|
||||
.label BODY2 = SCREEN+OFFSET
|
||||
// @begin
|
||||
|
@ -1,10 +1,10 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label SCREEN = $400
|
||||
.const STAR = $51
|
||||
.label VIC = $d000
|
||||
.const RED = 2
|
||||
.label SCREEN = $400
|
||||
.label VIC = $d000
|
||||
main: {
|
||||
// *SCREEN = STAR
|
||||
lda #STAR
|
||||
|
@ -165,10 +165,10 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const STAR = $51
|
||||
.label VIC = $d000
|
||||
.const RED = 2
|
||||
.label SCREEN = $400
|
||||
.label VIC = $d000
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -246,10 +246,10 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const STAR = $51
|
||||
.label VIC = $d000
|
||||
.const RED = 2
|
||||
.label SCREEN = $400
|
||||
.label VIC = $d000
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -351,10 +351,10 @@ Score: 173
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.const STAR = $51
|
||||
.label VIC = $d000
|
||||
.const RED = 2
|
||||
.label SCREEN = $400
|
||||
.label VIC = $d000
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
|
@ -1,9 +1,9 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label BGCOL = $d021
|
||||
.const GREEN = 5
|
||||
.const RED = 2
|
||||
.label BGCOL = $d021
|
||||
.label print_char_cursor = 2
|
||||
.label print_line_cursor = 4
|
||||
main: {
|
||||
|
@ -1594,9 +1594,9 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BGCOL = $d021
|
||||
.const GREEN = 5
|
||||
.const RED = 2
|
||||
.label BGCOL = $d021
|
||||
.label print_char_cursor = 6
|
||||
.label print_line_cursor = $a
|
||||
// @begin
|
||||
@ -2291,9 +2291,9 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BGCOL = $d021
|
||||
.const GREEN = 5
|
||||
.const RED = 2
|
||||
.label BGCOL = $d021
|
||||
.label print_char_cursor = 2
|
||||
.label print_line_cursor = 4
|
||||
// @begin
|
||||
@ -3128,9 +3128,9 @@ Score: 1783
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BGCOL = $d021
|
||||
.const GREEN = 5
|
||||
.const RED = 2
|
||||
.label BGCOL = $d021
|
||||
.label print_char_cursor = 2
|
||||
.label print_line_cursor = 4
|
||||
// @begin
|
||||
|
@ -12,8 +12,8 @@
|
||||
.label SCREEN = $2800
|
||||
.label print_char_cursor = 8
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __4 = $a
|
||||
.label xw = $17
|
||||
.label yw = $19
|
||||
|
@ -2317,8 +2317,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __4 = $33
|
||||
.label __6 = $39
|
||||
.label __7 = $3a
|
||||
@ -3458,8 +3458,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __4 = $a
|
||||
.label xw = $17
|
||||
.label yw = $19
|
||||
@ -4760,8 +4760,8 @@ Score: 1044103
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __4 = $a
|
||||
.label xw = $17
|
||||
.label yw = $19
|
||||
|
@ -11,8 +11,8 @@
|
||||
.label CHARSET = $2000
|
||||
.label SCREEN = $2800
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __3 = 6
|
||||
.label xw = $13
|
||||
.label yw = $15
|
||||
|
@ -1785,8 +1785,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __3 = $2a
|
||||
.label xw = $1e
|
||||
.label yw = $20
|
||||
@ -2649,8 +2649,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __3 = 6
|
||||
.label xw = $13
|
||||
.label yw = $15
|
||||
@ -3659,8 +3659,8 @@ Score: 1038677
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __3 = 6
|
||||
.label xw = $13
|
||||
.label yw = $15
|
||||
|
@ -3,16 +3,16 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// The number of iterations performed during 8-bit CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS_8 = 8
|
||||
.label D018 = $d018
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The number of iterations performed during 8-bit CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS_8 = 8
|
||||
.label CHARSET = $2000
|
||||
.label SCREEN = $2800
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label screen = 4
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
|
@ -1475,11 +1475,11 @@ Target platform is c64basic / MOS6502X
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// The number of iterations performed during 8-bit CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS_8 = 8
|
||||
.label D018 = $d018
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The number of iterations performed during 8-bit CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS_8 = 8
|
||||
.label CHARSET = $2000
|
||||
.label SCREEN = $2800
|
||||
// @begin
|
||||
@ -1500,8 +1500,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label angle = $18
|
||||
.label screen = 4
|
||||
.label x = 3
|
||||
@ -2189,11 +2189,11 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// The number of iterations performed during 8-bit CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS_8 = 8
|
||||
.label D018 = $d018
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The number of iterations performed during 8-bit CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS_8 = 8
|
||||
.label CHARSET = $2000
|
||||
.label SCREEN = $2800
|
||||
// @begin
|
||||
@ -2214,8 +2214,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label screen = 4
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
@ -3056,11 +3056,11 @@ Score: 232290
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// The number of iterations performed during 8-bit CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS_8 = 8
|
||||
.label D018 = $d018
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// The number of iterations performed during 8-bit CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS_8 = 8
|
||||
.label CHARSET = $2000
|
||||
.label SCREEN = $2800
|
||||
// @begin
|
||||
@ -3072,8 +3072,8 @@ Score: 232290
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label screen = 4
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
|
@ -3,10 +3,10 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
// The CIA#2: Serial bus, RS-232, VIC memory bank
|
||||
.label CIA2 = $dd00
|
||||
.label SCREEN = $400
|
||||
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
|
||||
main: {
|
||||
// (CIA2->PORT_B) &= 0x7f
|
||||
lda #$7f
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user