mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-13 03:39:12 +00:00
Added kickc.sh executor and examples of kickc code to release.
This commit is contained in:
parent
0b86f55829
commit
32d224589a
.gitlab-ci.yml
src
main
test/java/dk/camelot64/kickc/test
ReferenceHelper.javaTestPrograms.java
kc/examples
bresenham
chargen
helloworld
irq
multiplexer
rasterbars
scroll
scrollbig
scrolllogo
showlogo
sinplotter
sinsprites
ref/examples
bresenham
chargen
helloworld
irq
multiplexer
rasterbars
scroll
scrollbig
scrolllogo
showlogo
sinplotter
sinsprites
@ -11,9 +11,10 @@ release:
|
||||
artifacts:
|
||||
name: kickc_${CI_BUILD_REF_NAME}
|
||||
paths:
|
||||
- ./bin
|
||||
- ./lib
|
||||
- ./stdlib
|
||||
- ./examples
|
||||
- ./LICENSE*
|
||||
- ./NOTICE*
|
||||
- ./*.pdf
|
||||
|
||||
|
@ -18,6 +18,14 @@
|
||||
<include>*.kc</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>src/test/java/dk/camelot64/kickc/test/kc/examples</directory>
|
||||
<outputDirectory>examples</outputDirectory>
|
||||
<includes>
|
||||
<include>*/*.kc</include>
|
||||
<include>*/*.png</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>src/main/doc</directory>
|
||||
<outputDirectory></outputDirectory>
|
||||
@ -25,6 +33,13 @@
|
||||
<include>*.pdf</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>src/main/script</directory>
|
||||
<outputDirectory>bin</outputDirectory>
|
||||
<includes>
|
||||
<include>*.sh</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${project.build.directory}</directory>
|
||||
<outputDirectory>lib</outputDirectory>
|
||||
|
12
src/main/script/kickc.sh
Executable file
12
src/main/script/kickc.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
# JAVA HOME
|
||||
# KICKC HOME
|
||||
export KICKC_HOME="$(dirname $0)/.."
|
||||
# KCLIB HOME
|
||||
export KICKCLIB_HOME="$KICKC_HOME/stdlib"
|
||||
# KICKASSEMBLER HOME
|
||||
# VICE HOME
|
||||
|
||||
echo java -jar lib/kickc-0.5-SNAPSHOT.jar -I $KICKCLIB_HOME $*
|
||||
java -jar lib/kickc-0.5-SNAPSHOT.jar -I $KICKCLIB_HOME $*
|
@ -106,7 +106,23 @@ public class ReferenceHelper {
|
||||
}
|
||||
|
||||
public File getTmpFile(String fileName, String extension) {
|
||||
return new File(tempDir.toFile(), fileName + extension);
|
||||
File file = new File(tempDir.toFile(), fileName + extension);
|
||||
mkPath(file);
|
||||
return file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the path to the passed file is created.
|
||||
* @param file The file to create a path for
|
||||
*/
|
||||
private void mkPath(File file) {
|
||||
Path parent = file.toPath().getParent();
|
||||
File dir = parent.toFile();
|
||||
if(!dir.exists()) {
|
||||
mkPath(dir);
|
||||
dir.mkdir();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testIrqHyperscreen() throws IOException, URISyntaxException {
|
||||
compileAndCompare("irq-hyperscreen");
|
||||
compileAndCompare("examples/irq/irq-hyperscreen");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -140,7 +140,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testMultiplexer() throws IOException, URISyntaxException {
|
||||
compileAndCompare("simple-multiplexer", 10);
|
||||
compileAndCompare("examples/multiplexer/simple-multiplexer", 10);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -165,17 +165,17 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testSinePlotter() throws IOException, URISyntaxException {
|
||||
compileAndCompare("sine-plotter");
|
||||
compileAndCompare("examples/sinplotter/sine-plotter");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScrollLogo() throws IOException, URISyntaxException {
|
||||
compileAndCompare("scrolllogo");
|
||||
compileAndCompare("examples/scrolllogo/scrolllogo");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShowLogo() throws IOException, URISyntaxException {
|
||||
compileAndCompare("showlogo");
|
||||
compileAndCompare("examples/showlogo/showlogo");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -250,7 +250,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testHelloWorld() throws IOException, URISyntaxException {
|
||||
compileAndCompare("helloworld");
|
||||
compileAndCompare("examples/helloworld/helloworld");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -280,7 +280,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testVarForwardProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("var-forward-problem");
|
||||
compileAndCompare("var-forward-problem");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -375,7 +375,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testChargenAnalysis() throws IOException, URISyntaxException {
|
||||
compileAndCompare("chargen-analysis");
|
||||
compileAndCompare("examples/chargen/chargen-analysis");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -485,7 +485,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testRasterBars() throws IOException, URISyntaxException {
|
||||
compileAndCompare("raster-bars");
|
||||
compileAndCompare("examples/rasterbars/raster-bars");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -555,7 +555,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testSinusSprites() throws IOException, URISyntaxException {
|
||||
compileAndCompare("sinus-sprites");
|
||||
compileAndCompare("examples/sinsprites/sinus-sprites");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -650,7 +650,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testScrollBig() throws IOException, URISyntaxException {
|
||||
compileAndCompare("scrollbig");
|
||||
compileAndCompare("examples/scrollbig/scrollbig");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -675,7 +675,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testBitmapBresenham() throws IOException, URISyntaxException {
|
||||
compileAndCompare("bitmap-bresenham");
|
||||
compileAndCompare("examples/bresenham/bitmap-bresenham");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -725,7 +725,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testScroll() throws IOException, URISyntaxException {
|
||||
compileAndCompare("scroll");
|
||||
compileAndCompare("examples/scroll/scroll");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1025,7 +1025,7 @@ public class TestPrograms {
|
||||
Compiler compiler = new Compiler();
|
||||
compiler.addImportPath(stdlibPath);
|
||||
compiler.addImportPath(testPath);
|
||||
if(upliftCombinations!=null) {
|
||||
if(upliftCombinations != null) {
|
||||
compiler.setUpliftCombinations(upliftCombinations);
|
||||
}
|
||||
Program program = compiler.compile(fileName);
|
||||
@ -1047,9 +1047,12 @@ public class TestPrograms {
|
||||
private void compileAsm(String fileName, Program program) throws IOException {
|
||||
writeBinFile(fileName, ".asm", program.getAsm().toString(false));
|
||||
for(Path asmResourceFile : program.getAsmResourceFiles()) {
|
||||
File binFile = getBinFile(asmResourceFile.getFileName().toString());
|
||||
File asmFile = getBinFile(fileName, ".asm");
|
||||
String asmFolder = asmFile.getParent();
|
||||
File resFile = new File(asmFolder, asmResourceFile.getFileName().toString());
|
||||
mkPath(resFile);
|
||||
try {
|
||||
Files.copy(asmResourceFile, binFile.toPath());
|
||||
Files.copy(asmResourceFile, resFile.toPath());
|
||||
} catch(FileAlreadyExistsException e) {
|
||||
// Ignore this
|
||||
}
|
||||
@ -1080,11 +1083,23 @@ public class TestPrograms {
|
||||
}
|
||||
|
||||
public File getBinFile(String fileName, String extension) {
|
||||
return new File(getBinDir(), fileName + extension);
|
||||
File binFile = new File(getBinDir(), fileName + extension);
|
||||
mkPath(binFile);
|
||||
return binFile;
|
||||
}
|
||||
|
||||
public File getBinFile(String fileName) {
|
||||
return new File(getBinDir(), fileName);
|
||||
*/
|
||||
/**
|
||||
* Ensures that the path to the passed file is created.
|
||||
* @param file The file to create a path for
|
||||
*/
|
||||
private void mkPath(File file) {
|
||||
Path parent = file.toPath().getParent();
|
||||
File dir = parent.toFile();
|
||||
if(!dir.exists()) {
|
||||
mkPath(dir);
|
||||
dir.mkdir();
|
||||
}
|
||||
}
|
||||
|
||||
public File getBinDir() {
|
||||
@ -1092,10 +1107,8 @@ public class TestPrograms {
|
||||
File binDir = new File(tempDir.toFile(), "bin");
|
||||
if(!binDir.exists()) {
|
||||
binDir.mkdir();
|
||||
|
||||
}
|
||||
return binDir;
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
Before ![]() (image error) Size: 1.3 KiB After ![]() (image error) Size: 1.3 KiB ![]() ![]() |
Before ![]() (image error) Size: 5.8 KiB After ![]() (image error) Size: 5.8 KiB ![]() ![]() |
@ -5,7 +5,6 @@ import "memory.kc"
|
||||
byte* SCREEN = $400;
|
||||
byte* LOGO = $2000;
|
||||
kickasm(resource "logo.png", pc LOGO, bytes 6*40*8) {{
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
Binary file not shown.
After ![]() (image error) Size: 5.8 KiB |
@ -4,7 +4,6 @@ byte* SCREEN = $400;
|
||||
byte* LOGO = $2000;
|
||||
|
||||
kickasm(resource "logo.png", pc LOGO, bytes 6*40*8 ) {{
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
@ -712,8 +712,7 @@ fill: {
|
||||
.align $100
|
||||
xsin: .fill 2*XSIN_SIZE, 0
|
||||
.pc = LOGO "Inline"
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
@ -2,8 +2,7 @@
|
||||
[0] phi() [ ] ( )
|
||||
to:@24
|
||||
@24: scope:[] from @begin
|
||||
kickasm(location (const byte*) LOGO#0) {{ logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
@ -505,8 +505,7 @@ fill::@return: scope:[fill] from fill::@1
|
||||
(byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
(byte/signed word/word/dword/signed dword~) $1 ← (byte/word/signed word/dword/signed dword~) $0 * (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
kickasm(location (byte*) LOGO#0) {{ logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
kickasm(location (byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
@ -2745,8 +2744,7 @@ FINAL CONTROL FLOW GRAPH
|
||||
[0] phi() [ ] ( )
|
||||
to:@24
|
||||
@24: scope:[] from @begin
|
||||
kickasm(location (const byte*) LOGO#0) {{ logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
@ -3743,7 +3741,7 @@ bbegin:
|
||||
jmp b24
|
||||
//SEG3 @24
|
||||
b24:
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
||||
b27_from_b24:
|
||||
jmp b27
|
||||
@ -5379,8 +5377,7 @@ fill: {
|
||||
.align $100
|
||||
xsin: .fill 2*XSIN_SIZE, 0
|
||||
.pc = LOGO "Inline"
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
@ -5886,7 +5883,7 @@ bbegin:
|
||||
jmp b24
|
||||
//SEG3 @24
|
||||
b24:
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
||||
b27_from_b24:
|
||||
jmp b27
|
||||
@ -7254,8 +7251,7 @@ fill: {
|
||||
.align $100
|
||||
xsin: .fill 2*XSIN_SIZE, 0
|
||||
.pc = LOGO "Inline"
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
@ -7969,7 +7965,7 @@ Score: 41393
|
||||
.label xsin_idx = 2
|
||||
//SEG2 @begin
|
||||
//SEG3 @24
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
||||
//SEG6 @27
|
||||
//SEG7 [3] call main [ ] ( )
|
||||
@ -9107,8 +9103,7 @@ fill: {
|
||||
.align $100
|
||||
xsin: .fill 2*XSIN_SIZE, 0
|
||||
.pc = LOGO "Inline"
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
@ -89,8 +89,7 @@ fill: {
|
||||
rts
|
||||
}
|
||||
.pc = LOGO "Inline"
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
@ -2,8 +2,7 @@
|
||||
[0] phi() [ ] ( )
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
kickasm(location (const byte*) LOGO#0) {{ logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
@ -21,8 +21,7 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
(byte/signed word/word/dword/signed dword~) $1 ← (byte/word/signed word/dword/signed dword~) $0 * (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
kickasm(location (byte*) LOGO#0) {{ logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
kickasm(location (byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
@ -398,8 +397,7 @@ FINAL CONTROL FLOW GRAPH
|
||||
[0] phi() [ ] ( )
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
kickasm(location (const byte*) LOGO#0) {{ logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
@ -544,7 +542,7 @@ bbegin:
|
||||
jmp b3
|
||||
//SEG3 @3
|
||||
b3:
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||
b5_from_b3:
|
||||
jmp b5
|
||||
@ -701,8 +699,7 @@ fill: {
|
||||
rts
|
||||
}
|
||||
.pc = LOGO "Inline"
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
@ -773,7 +770,7 @@ bbegin:
|
||||
jmp b3
|
||||
//SEG3 @3
|
||||
b3:
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||
b5_from_b3:
|
||||
jmp b5
|
||||
@ -923,8 +920,7 @@ fill: {
|
||||
rts
|
||||
}
|
||||
.pc = LOGO "Inline"
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
@ -1071,7 +1067,7 @@ Score: 3578
|
||||
.label LOGO = $2000
|
||||
//SEG2 @begin
|
||||
//SEG3 @3
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||
//SEG6 @5
|
||||
//SEG7 [3] call main [ ] ( )
|
||||
@ -1194,8 +1190,7 @@ fill: {
|
||||
rts
|
||||
}
|
||||
.pc = LOGO "Inline"
|
||||
logo:
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
@ -0,0 +1,73 @@
|
||||
(label) @3
|
||||
(label) @5
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL2
|
||||
(const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3
|
||||
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte*) D016
|
||||
(const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) DARK_GREY
|
||||
(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte*) LOGO
|
||||
(const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte) VIC_CSEL
|
||||
(const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_MCM
|
||||
(const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
|
||||
(label) fill::@1
|
||||
(label) fill::@return
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#0 addr zp ZP_WORD:4 2.0
|
||||
(byte*) fill::addr#1 addr zp ZP_WORD:4 16.5
|
||||
(byte*) fill::addr#2 addr zp ZP_WORD:4 17.5
|
||||
(byte*) fill::end
|
||||
(byte*) fill::end#0 end zp ZP_WORD:2 2.6
|
||||
(word) fill::size
|
||||
(word) fill::size#2 size zp ZP_WORD:2 2.0
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#3 reg byte x 1.8333333333333333
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@3
|
||||
(label) main::@9
|
||||
(byte) main::ch
|
||||
(byte) main::ch#1 reg byte x 16.5
|
||||
(byte) main::ch#2 reg byte x 22.0
|
||||
(label) main::toD0181
|
||||
(word~) main::toD0181_$0
|
||||
(word~) main::toD0181_$1
|
||||
(word~) main::toD0181_$2
|
||||
(byte~) main::toD0181_$3
|
||||
(word~) main::toD0181_$4
|
||||
(byte~) main::toD0181_$5
|
||||
(byte~) main::toD0181_$6
|
||||
(byte~) main::toD0181_$7
|
||||
(byte~) main::toD0181_$8
|
||||
(byte*) main::toD0181_gfx
|
||||
(byte) main::toD0181_return
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) LOGO#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
(byte*) main::toD0181_screen
|
||||
|
||||
reg byte x [ main::ch#2 main::ch#1 ]
|
||||
zp ZP_WORD:2 [ fill::size#2 fill::end#0 ]
|
||||
reg byte x [ fill::val#3 ]
|
||||
zp ZP_WORD:4 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
Loading…
x
Reference in New Issue
Block a user