1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-20 03:29:32 +00:00

Added support for address-of pointers to members of structs.

This commit is contained in:
jespergravgaard 2020-04-30 22:15:59 +02:00
parent bf0dbfde63
commit facd70053d
411 changed files with 4148 additions and 3493 deletions

View File

@ -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 {

View File

@ -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;

View File

@ -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");

View 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';
}

View 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;
}

View File

@ -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

View File

@ -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]

View File

@ -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)

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: {

View File

@ -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

View File

@ -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: {

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: {

View File

@ -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

View File

@ -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: {

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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()

View File

@ -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()

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: {

View File

@ -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]

View File

@ -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: {

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: {

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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