1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Added semicolon to do {} while ();

This commit is contained in:
jespergravgaard 2017-11-05 09:44:00 +01:00
parent f1512af630
commit 09dd676363
54 changed files with 4224 additions and 3756 deletions

View File

@ -256,12 +256,6 @@ public class AsmFragment {
return null;
}
//@Override
//public Object visitAsmComment(KickCParser.AsmCommentContext ctx) {
// program.addLine(new AsmComment(ctx.getChild(1).getText()));
// return null;
//}
@Override
public Object visitAsmInstruction(KickCParser.AsmInstructionContext ctx) {
KickCParser.AsmParamModeContext paramModeCtx = ctx.asmParamMode();
@ -374,6 +368,11 @@ public class AsmFragment {
return new AsmParameter(param, isZp);
}
@Override
public Object visitAsmExprChar(KickCParser.AsmExprCharContext ctx) {
return new AsmParameter(ctx.getText(), true);
}
@Override
public AsmParameter visitAsmExprLabel(KickCParser.AsmExprLabelContext ctx) {
String param = ctx.NAME().getSymbol().getText();

View File

@ -21,7 +21,7 @@ stmt
| expr ';' #stmtExpr
| 'if' '(' expr ')' stmt ( 'else' stmt )? #stmtIfElse
| 'while' '(' expr ')' stmt #stmtWhile
| 'do' stmt 'while' '(' expr ')' #stmtDoWhile
| 'do' stmt 'while' '(' expr ')' ';' #stmtDoWhile
| 'for' '(' forDeclaration? forIteration ')' stmt #stmtFor
| 'return' expr? ';' #stmtReturn
| 'asm' '{' asmLines '}' ';' #stmtAsm
@ -124,6 +124,7 @@ asmExpr
| ASMREL #asmExprLabelRel
| '{' NAME '}' #asmExprReplace
| NUMBER #asmExprInt
| CHAR #asmExprChar
;
MNEMONIC:

View File

@ -719,6 +719,18 @@ public class KickCBaseListener implements KickCListener {
* <p>The default implementation does nothing.</p>
*/
@Override public void exitAsmExprUnary(KickCParser.AsmExprUnaryContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterAsmExprChar(KickCParser.AsmExprCharContext ctx) { }
/**
* {@inheritDoc}
*
* <p>The default implementation does nothing.</p>
*/
@Override public void exitAsmExprChar(KickCParser.AsmExprCharContext ctx) { }
/**
* {@inheritDoc}

View File

@ -424,4 +424,11 @@ public class KickCBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitAsmExprUnary(KickCParser.AsmExprUnaryContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* <p>The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.</p>
*/
@Override public T visitAsmExprChar(KickCParser.AsmExprCharContext ctx) { return visitChildren(ctx); }
}

View File

@ -695,4 +695,16 @@ public interface KickCListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitAsmExprUnary(KickCParser.AsmExprUnaryContext ctx);
/**
* Enter a parse tree produced by the {@code asmExprChar}
* labeled alternative in {@link KickCParser#asmExpr}.
* @param ctx the parse tree
*/
void enterAsmExprChar(KickCParser.AsmExprCharContext ctx);
/**
* Exit a parse tree produced by the {@code asmExprChar}
* labeled alternative in {@link KickCParser#asmExpr}.
* @param ctx the parse tree
*/
void exitAsmExprChar(KickCParser.AsmExprCharContext ctx);
}

File diff suppressed because it is too large Load Diff

View File

@ -413,4 +413,11 @@ public interface KickCVisitor<T> extends ParseTreeVisitor<T> {
* @return the visitor result
*/
T visitAsmExprUnary(KickCParser.AsmExprUnaryContext ctx);
/**
* Visit a parse tree produced by the {@code asmExprChar}
* labeled alternative in {@link KickCParser#asmExpr}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAsmExprChar(KickCParser.AsmExprCharContext ctx);
}

View File

@ -32,6 +32,10 @@ public class TestPrograms extends TestCase {
compileAndCompare("inline-asm");
}
public void testChargen() throws IOException, URISyntaxException {
compileAndCompare("chargen");
}
public void testBitmapPlotter() throws IOException, URISyntaxException {
compileAndCompare("bitmap-plotter");
}

View File

@ -37,7 +37,7 @@ void main() {
init_plot_tables();
do {
lines();
} while (true)
} while (true);
}
void lines() {
@ -96,7 +96,7 @@ void line_xdyi(byte x, byte y, byte x1, byte xd, byte yd) {
y = y+1;
e = e - xd;
}
} while (x<(x1+1))
} while (x<(x1+1));
}
void line_xdyd(byte x, byte y, byte x1, byte xd, byte yd) {
@ -109,7 +109,7 @@ void line_xdyd(byte x, byte y, byte x1, byte xd, byte yd) {
y = y-1;
e = e - xd;
}
} while (x<(x1+1))
} while (x<(x1+1));
}
void line_ydxi(byte y, byte x, byte y1, byte yd, byte xd) {
@ -122,7 +122,7 @@ void line_ydxi(byte y, byte x, byte y1, byte yd, byte xd) {
x = x+1;
e = e - yd;
}
} while (y<(y1+1))
} while (y<(y1+1));
}
void line_ydxd(byte y, byte x, byte y1, byte yd, byte xd) {
@ -135,7 +135,7 @@ void line_ydxd(byte y, byte x, byte y1, byte yd, byte xd) {
x = x-1;
e = e - yd;
}
} while (y<(y1+1))
} while (y<(y1+1));
}
void plot(byte x, byte y) {

View File

@ -26,11 +26,11 @@ void main() {
init_screen();
init_plot_tables();
do {
do {} while (*RASTER!=$ff)
do {} while (*RASTER!=$ff);
*BGCOL = *BGCOL+1;
plots();
*BGCOL = *BGCOL-1;
} while (true)
} while (true);
}
byte[] plots_x = { 60, 80, 110, 80, 60, 40, 10, 40 };

View File

@ -22,5 +22,5 @@ void main() {
cursor = cursor + 40;
e = e - xd;
}
} while (x<(x1+1))
} while (x<(x1+1));
}

View File

@ -22,5 +22,5 @@ void main() {
idx = idx + 40;
e = e - xd;
}
} while (x<(x1+1))
} while (x<(x1+1));
}

View File

@ -0,0 +1,25 @@
byte* PROCPORT = $01;
byte* CHARGEN = $d000;
byte* SCREEN = $0400;
void main() {
asm { sei };
byte* CHAR_A = CHARGEN+8;
*PROCPORT = $32;
byte* sc = SCREEN;
for(byte y:0..7) {
byte bits = CHAR_A[y];
for(byte x:0..7) {
byte c = '.';
if((bits & $80) != 0) {
c = '*';
}
*sc = c;
sc++;
bits = bits<<1;
}
sc = sc+32;
}
*PROCPORT = $37;
asm { cli };
}

View File

@ -8,7 +8,7 @@ void main() {
}
do {
line(0, 10);
} while (true)
} while (true);
}
void line(byte x0, byte x1) {

View File

@ -6,5 +6,5 @@ void main() {
byte i = 0;
do {
fibs[i+2] = fibs[i]+fibs[i+1];
} while(++i<15)
} while(++i<15);
}

View File

@ -7,12 +7,12 @@ void main() {
prepare();
do {
for( byte c : 25..1) {
do { } while(*RASTER!=254)
do { } while(*RASTER!=255)
do { } while(*RASTER!=254);
do { } while(*RASTER!=255);
}
flip();
plot();
} while(true)
} while(true);
}
// Prepare buffer

View File

@ -8,6 +8,7 @@ byte* CHARSET4 = $2800;
byte[] bits_count = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
void main() {
asm { sei };
*PROCPORT = $32;
byte* chargen = CHARGEN;
byte* charset4 = CHARSET4;
@ -29,9 +30,9 @@ void main() {
*charset4 = bits_gen;
charset4++;
chargen = chargen+2;
} while (chargen<CHARGEN+$800)
} while (chargen<CHARGEN+$800);
*PROCPORT = $37;
asm { cli };
for(byte i : 0..255) {
SCREEN[i] = i;
}

View File

@ -7,5 +7,5 @@ void main() {
if(i<50) {
*SCREEN = i;
}
} while(++i<100)
} while(++i<100);
}

View File

@ -1,25 +1,14 @@
byte* PROCPORT = $01;
byte* CHARGEN = $d000;
byte* SCREEN = $0400;
void main() {
asm { sei };
byte* CHAR_A = CHARGEN+8;
*PROCPORT = $32;
byte* sc = SCREEN;
for(byte y:0..7) {
byte bits = CHAR_A[y];
for(byte x:0..7) {
if((bits & $80) != 0) {
*sc = '*';
} else {
*sc = '.';
}
sc++;
bits = bits<<1;
}
sc = sc+32;
}
*PROCPORT = $37;
asm { cli };
asm {
lda #'a'
ldx #$ff
!:
sta $0400,x
sta $0500,x
sta $0600,x
sta $0700,x
dex
bne !-
};
}

View File

@ -10,5 +10,5 @@ void main() {
if(++i==8) {
i = 0;
}
} while(++cursor<SCREEN+1000)
} while(++cursor<SCREEN+1000);
}

View File

@ -4,5 +4,5 @@ void main() {
do {
buf[i] = 2+i+2;
i = i+1;
} while(i<10)
} while(i<10);
}

View File

@ -6,5 +6,5 @@ void main() {
s=s+i;
}
i--;
} while (i>0)
} while (i>0);
}

View File

@ -4,12 +4,12 @@ void main() {
byte i=100;
do {
nest();
} while (--i>0)
} while (--i>0);
}
void nest() {
byte j=100;
do {
*SCREEN = j;
} while (--j>0)
} while (--j>0);
}

View File

@ -6,8 +6,8 @@ void main() {
byte j=100;
do {
nest1();
} while (--j>0)
} while (--i>0)
} while (--j>0);
} while (--i>0);
}
void nest1() {
@ -16,8 +16,8 @@ void nest1() {
byte j=100;
do {
nest2();
} while (--j>0)
} while (--i>0)
} while (--j>0);
} while (--i>0);
}
void nest2() {
@ -26,6 +26,6 @@ void nest2() {
byte j=100;
do {
*SCREEN = j;
} while (--j>0)
} while (--i>0)
} while (--j>0);
} while (--i>0);
}

View File

@ -37,7 +37,7 @@ void main() {
init_plot_tables();
do {
lines();
} while (true)
} while (true);
}
void lines() {
@ -96,7 +96,7 @@ void line_xdyi(byte x, byte y, byte x1, byte xd, byte yd) {
y = y+1;
e = e - xd;
}
} while (x<(x1+1))
} while (x<(x1+1));
}
void line_xdyd(byte x, byte y, byte x1, byte xd, byte yd) {
@ -109,7 +109,7 @@ void line_xdyd(byte x, byte y, byte x1, byte xd, byte yd) {
y = y-1;
e = e - xd;
}
} while (x<(x1+1))
} while (x<(x1+1));
}
void line_ydxi(byte y, byte x, byte y1, byte yd, byte xd) {
@ -122,7 +122,7 @@ void line_ydxi(byte y, byte x, byte y1, byte yd, byte xd) {
x = x+1;
e = e - yd;
}
} while (y<(y1+1))
} while (y<(y1+1));
}
void line_ydxd(byte y, byte x, byte y1, byte yd, byte xd) {
@ -135,7 +135,7 @@ void line_ydxd(byte y, byte x, byte y1, byte yd, byte xd) {
x = x-1;
e = e - yd;
}
} while (y<(y1+1))
} while (y<(y1+1));
}
void plot(byte x, byte y) {

View File

@ -26,11 +26,11 @@ void main() {
init_screen();
init_plot_tables();
do {
do {} while (*RASTER!=$ff)
do {} while (*RASTER!=$ff);
*BGCOL = *BGCOL+1;
plots();
*BGCOL = *BGCOL-1;
} while (true)
} while (true);
}
byte[] plots_x = { 60, 80, 110, 80, 60, 40, 10, 40 };

View File

@ -22,7 +22,7 @@ void main() {
cursor = cursor + 40;
e = e - xd;
}
} while (x<(x1+1))
} while (x<(x1+1));
}
PROGRAM
(byte) STAR ← (byte) 81

View File

@ -22,7 +22,7 @@ void main() {
idx = idx + 40;
e = e - xd;
}
} while (x<(x1+1))
} while (x<(x1+1));
}
PROGRAM
proc (void()) main()

View File

@ -0,0 +1,62 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.const PROCPORT = 1
.const CHARGEN = $d000
.const SCREEN = $400
jsr main
main: {
.const CHAR_A = CHARGEN+8
.label bits = 3
.label sc = 4
.label y = 2
sei
lda #$32
sta PROCPORT
lda #<SCREEN
sta sc
lda #>SCREEN
sta sc+1
lda #0
sta y
b1:
ldx y
lda CHAR_A,x
sta bits
ldx #0
b2:
lda bits
and #$80
cmp #0
beq b3_from_b2
lda #'*'
jmp b3
b3_from_b2:
lda #'.'
b3:
ldy #0
sta (sc),y
inc sc
bne !+
inc sc+1
!:
asl bits
inx
cpx #8
bne b2
lda sc
clc
adc #$20
sta sc
bcc !+
inc sc+1
!:
inc y
lda y
cmp #8
bne b1
lda #$37
sta PROCPORT
cli
rts
}

View File

@ -0,0 +1,44 @@
@begin: scope:[] from
to:@1
@1: scope:[] from @begin
[0] call main param-assignment [ ]
to:@end
@end: scope:[] from @1
main: scope:[main] from @1
asm { sei }
[2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ]
to:main::@1
main::@1: scope:[main] from main main::@5
[3] (byte*) main::sc#7 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*) main::sc#2 ) [ main::y#2 main::sc#7 ]
[3] (byte) main::y#2 ← phi( main/(byte) 0 main::@5/(byte) main::y#1 ) [ main::y#2 main::sc#7 ]
[4] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ]
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
[5] (byte) main::x#2 ← phi( main::@1/(byte) 0 main::@3/(byte) main::x#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
[5] (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
[5] (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
[6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ]
[7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
to:main::@4
main::@4: scope:[main] from main::@2
to:main::@3
main::@3: scope:[main] from main::@2 main::@4
[8] (byte) main::c#2 ← phi( main::@2/(byte) '.' main::@4/(byte) '*' ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::c#2 ]
[9] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
[10] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ]
[11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ]
[12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ]
[13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ]
to:main::@5
main::@5: scope:[main] from main::@3
[14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ]
[15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ]
[16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ]
to:main::@6
main::@6: scope:[main] from main::@5
[17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ]
asm { cli }
to:main::@return
main::@return: scope:[main] from main::@6
[19] return [ ]
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,44 @@
(label) @1
(label) @begin
(label) @end
(byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248
(byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = (byte) 1
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(byte~) main::$2 reg byte a 202.0
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@return
(byte*) main::CHAR_A
(const byte*) main::CHAR_A#0 CHAR_A = (const byte*) CHARGEN#0+(byte) 8
(byte) main::bits
(byte) main::bits#0 bits zp ZP_BYTE:3 22.0
(byte) main::bits#1 bits zp ZP_BYTE:3 67.33333333333333
(byte) main::bits#2 bits zp ZP_BYTE:3 52.33333333333333
(byte) main::c
(byte) main::c#2 reg byte a 101.0
(byte*) main::sc
(byte*) main::sc#1 sc zp ZP_PTR_BYTE:4 53.25
(byte*) main::sc#2 sc zp ZP_PTR_BYTE:4 7.333333333333333
(byte*) main::sc#3 sc zp ZP_PTR_BYTE:4 62.8
(byte*) main::sc#7 sc zp ZP_PTR_BYTE:4 11.0
(byte) main::x
(byte) main::x#1 reg byte x 151.5
(byte) main::x#2 reg byte x 28.857142857142858
(byte) main::y
(byte) main::y#1 y zp ZP_BYTE:2 16.5
(byte) main::y#2 y zp ZP_BYTE:2 2.75
zp ZP_BYTE:2 [ main::y#2 main::y#1 ]
zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ]
zp ZP_PTR_BYTE:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ]
reg byte x [ main::x#2 main::x#1 ]
reg byte a [ main::c#2 ]
reg byte a [ main::$2 ]

View File

@ -8,7 +8,7 @@ void main() {
}
do {
line(0, 10);
} while (true)
} while (true);
}
void line(byte x0, byte x1) {

View File

@ -6,7 +6,7 @@ void main() {
byte i = 0;
do {
fibs[i+2] = fibs[i]+fibs[i+1];
} while(++i<15)
} while(++i<15);
}
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
PROGRAM

View File

@ -7,12 +7,12 @@ void main() {
prepare();
do {
for( byte c : 25..1) {
do { } while(*RASTER!=254)
do { } while(*RASTER!=255)
do { } while(*RASTER!=254);
do { } while(*RASTER!=255);
}
flip();
plot();
} while(true)
} while(true);
}
// Prepare buffer

View File

@ -18,6 +18,7 @@ main: {
.label bits_gen = 6
.label charset4 = 4
.label chargen = 2
sei
lda #$32
sta PROCPORT
lda #<CHARSET4
@ -75,8 +76,7 @@ main: {
bcc b3
inc bits_gen
b3:
asl
sta bits_gen
asl bits_gen
ldy #0
lda (chargen),y
and #6
@ -92,8 +92,7 @@ main: {
bcc b4
inc bits_gen
b4:
asl
sta bits_gen
asl bits_gen
ldy #0
lda (chargen),y
and #1
@ -134,6 +133,7 @@ main: {
!:
lda #$37
sta PROCPORT
cli
ldx #0
b6:
txa

View File

@ -5,92 +5,94 @@
to:@end
@end: scope:[] from @1
main: scope:[main] from @1
[1] *((const byte*) PROCPORT#0) ← (byte) 50 [ ]
asm { sei }
[2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ]
to:main::@1
main::@1: scope:[main] from main main::@5
[2] (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@5/(byte*) main::charset4#1 ) [ main::chargen#10 main::charset4#10 ]
[2] (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@5/(byte*) main::chargen#1 ) [ main::chargen#10 main::charset4#10 ]
[3] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ]
[4] (byte~) main::$1 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ]
[5] (byte~) main::$2 ← (byte~) main::$1 & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 ]
[6] (byte~) main::$3 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$3 ]
[7] (byte~) main::$4 ← (byte~) main::$3 & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$4 ]
[8] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$5 ]
[9] (byte~) main::$6 ← (byte~) main::$2 | (byte~) main::$5 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ]
[10] (byte~) main::$7 ← (byte~) main::$6 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$7 ]
[11] (byte~) main::$8 ← (byte~) main::$7 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$8 ]
[12] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$8 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ]
[13] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ]
[3] (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@5/(byte*) main::charset4#1 ) [ main::chargen#10 main::charset4#10 ]
[3] (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@5/(byte*) main::chargen#1 ) [ main::chargen#10 main::charset4#10 ]
[4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ]
[5] (byte~) main::$1 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ]
[6] (byte~) main::$2 ← (byte~) main::$1 & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 ]
[7] (byte~) main::$3 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$3 ]
[8] (byte~) main::$4 ← (byte~) main::$3 & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$4 ]
[9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$5 ]
[10] (byte~) main::$6 ← (byte~) main::$2 | (byte~) main::$5 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ]
[11] (byte~) main::$7 ← (byte~) main::$6 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$7 ]
[12] (byte~) main::$8 ← (byte~) main::$7 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$8 ]
[13] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$8 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ]
[14] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ]
to:main::@7
main::@7: scope:[main] from main::@1
to:main::@2
main::@2: scope:[main] from main::@1 main::@7
[14] (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ]
[15] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ]
[16] (byte~) main::$14 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ]
[17] (byte~) main::$15 ← (byte~) main::$14 & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ]
[18] (byte~) main::$16 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$16 ]
[19] (byte~) main::$17 ← (byte~) main::$16 & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$17 ]
[20] (byte~) main::$18 ← (byte~) main::$17 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$18 ]
[21] (byte~) main::$19 ← (byte~) main::$15 | (byte~) main::$18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$19 ]
[22] (byte~) main::$20 ← (byte~) main::$19 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$20 ]
[23] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$20 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ]
[24] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ]
[15] (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ]
[16] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ]
[17] (byte~) main::$14 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ]
[18] (byte~) main::$15 ← (byte~) main::$14 & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ]
[19] (byte~) main::$16 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$16 ]
[20] (byte~) main::$17 ← (byte~) main::$16 & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$17 ]
[21] (byte~) main::$18 ← (byte~) main::$17 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$18 ]
[22] (byte~) main::$19 ← (byte~) main::$15 | (byte~) main::$18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$19 ]
[23] (byte~) main::$20 ← (byte~) main::$19 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$20 ]
[24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$20 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ]
[25] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ]
to:main::@8
main::@8: scope:[main] from main::@2
[25] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ]
[26] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ]
to:main::@3
main::@3: scope:[main] from main::@2 main::@8
[26] (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ]
[27] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ]
[28] (byte~) main::$26 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ]
[29] (byte~) main::$27 ← (byte~) main::$26 & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$27 ]
[30] (byte~) main::$28 ← (byte~) main::$27 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 ]
[31] (byte~) main::$29 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$29 ]
[32] (byte~) main::$30 ← (byte~) main::$29 & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$30 ]
[33] (byte~) main::$31 ← (byte~) main::$30 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$31 ]
[34] (byte~) main::$32 ← (byte~) main::$28 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$32 ]
[35] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$32 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ]
[36] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ]
[27] (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ]
[28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ]
[29] (byte~) main::$26 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ]
[30] (byte~) main::$27 ← (byte~) main::$26 & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$27 ]
[31] (byte~) main::$28 ← (byte~) main::$27 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 ]
[32] (byte~) main::$29 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$29 ]
[33] (byte~) main::$30 ← (byte~) main::$29 & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$30 ]
[34] (byte~) main::$31 ← (byte~) main::$30 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$31 ]
[35] (byte~) main::$32 ← (byte~) main::$28 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$32 ]
[36] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$32 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ]
[37] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ]
to:main::@9
main::@9: scope:[main] from main::@3
[37] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ]
[38] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ]
to:main::@4
main::@4: scope:[main] from main::@3 main::@9
[38] (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ]
[39] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ]
[40] (byte~) main::$38 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$38 ]
[41] (byte~) main::$39 ← (byte~) main::$38 & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$39 ]
[42] (byte~) main::$40 ← (byte~) main::$39 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$40 ]
[43] (byte~) main::$41 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$40 main::$41 ]
[44] (byte~) main::$42 ← (byte~) main::$41 & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$40 main::$42 ]
[45] (byte~) main::$43 ← (byte~) main::$40 | (byte~) main::$42 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$43 ]
[46] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$43 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ]
[47] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ]
[39] (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ]
[40] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ]
[41] (byte~) main::$38 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$38 ]
[42] (byte~) main::$39 ← (byte~) main::$38 & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$39 ]
[43] (byte~) main::$40 ← (byte~) main::$39 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$40 ]
[44] (byte~) main::$41 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$40 main::$41 ]
[45] (byte~) main::$42 ← (byte~) main::$41 & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$40 main::$42 ]
[46] (byte~) main::$43 ← (byte~) main::$40 | (byte~) main::$42 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$43 ]
[47] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$43 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ]
[48] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ]
to:main::@10
main::@10: scope:[main] from main::@4
[48] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ]
[49] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ]
to:main::@5
main::@5: scope:[main] from main::@10 main::@4
[49] (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) [ main::chargen#10 main::charset4#10 main::bits_gen#15 ]
[50] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ]
[51] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ]
[52] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ]
[53] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ]
[54] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ]
[50] (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) [ main::chargen#10 main::charset4#10 main::bits_gen#15 ]
[51] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ]
[52] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ]
[53] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ]
[54] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ]
[55] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ]
to:main::@11
main::@11: scope:[main] from main::@5
[55] *((const byte*) PROCPORT#0) ← (byte) 55 [ ]
[56] *((const byte*) PROCPORT#0) ← (byte) 55 [ ]
asm { cli }
to:main::@6
main::@6: scope:[main] from main::@11 main::@6
[56] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ]
[57] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ]
[58] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ]
[59] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ]
[58] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ]
[59] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ]
[60] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ]
[61] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ]
to:main::@12
main::@12: scope:[main] from main::@6
[60] *((const byte*) D018#0) ← (byte) 25 [ ]
[62] *((const byte*) D018#0) ← (byte) 25 [ ]
to:main::@return
main::@return: scope:[main] from main::@12
[61] return [ ]
[63] return [ ]
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ void main() {
if(i<50) {
*SCREEN = i;
}
} while(++i<100)
} while(++i<100);
}
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
PROGRAM

View File

@ -1,64 +1,16 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.const PROCPORT = 1
.const CHARGEN = $d000
.const SCREEN = $400
jsr main
main: {
.const CHAR_A = CHARGEN+8
.label bits = 3
.label sc = 4
.label y = 2
sei
lda #$32
sta PROCPORT
lda #<SCREEN
sta sc
lda #>SCREEN
sta sc+1
lda #0
sta y
b1:
ldx y
lda CHAR_A,x
sta bits
ldx #0
b2:
lda bits
and #$80
cmp #0
beq b3
ldy #0
lda #'*'
sta (sc),y
b4:
inc sc
bne !+
inc sc+1
lda #'a'
ldx #$ff
!:
asl bits
inx
cpx #8
bne b2
lda sc
clc
adc #$20
sta sc
bcc !+
inc sc+1
!:
inc y
lda y
cmp #8
bne b1
lda #$37
sta PROCPORT
cli
sta $400,x
sta $500,x
sta $600,x
sta $700,x
dex
bne !-
rts
b3:
ldy #0
lda #'.'
sta (sc),y
jmp b4
}

View File

@ -5,42 +5,8 @@
to:@end
@end: scope:[] from @1
main: scope:[main] from @1
asm { sei }
[2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ]
to:main::@1
main::@1: scope:[main] from main main::@7
[3] (byte*) main::sc#8 ← phi( main/(const byte*) SCREEN#0 main::@7/(byte*) main::sc#2 ) [ main::y#2 main::sc#8 ]
[3] (byte) main::y#2 ← phi( main/(byte) 0 main::@7/(byte) main::y#1 ) [ main::y#2 main::sc#8 ]
[4] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#8 main::bits#0 ]
to:main::@2
main::@2: scope:[main] from main::@1 main::@4
[5] (byte) main::x#2 ← phi( main::@1/(byte) 0 main::@4/(byte) main::x#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
[5] (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#8 main::@4/(byte*) main::sc#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
[5] (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@4/(byte) main::bits#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
[6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ]
[7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
to:main::@5
main::@5: scope:[main] from main::@2
[8] *((byte*) main::sc#3) ← (byte) '*' [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
to:main::@4
main::@4: scope:[main] from main::@3 main::@5
[9] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ]
[10] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ]
[11] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ]
[12] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ]
to:main::@7
main::@7: scope:[main] from main::@4
[13] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ]
[14] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ]
[15] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ]
to:main::@8
main::@8: scope:[main] from main::@7
[16] *((const byte*) PROCPORT#0) ← (byte) 55 [ ]
asm { cli }
asm { lda#'a'ldx#$ff!:sta$0400,xsta$0500,xsta$0600,xsta$0700,xdexbne!- }
to:main::@return
main::@return: scope:[main] from main::@8
[18] return [ ]
main::@return: scope:[main] from main
[2] return [ ]
to:@return
main::@3: scope:[main] from main::@2
[19] *((byte*) main::sc#3) ← (byte) '.' [ main::y#2 main::bits#2 main::sc#3 main::x#2 ]
to:main::@4

File diff suppressed because it is too large Load Diff

View File

@ -1,42 +1,6 @@
(label) @1
(label) @begin
(label) @end
(byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248
(byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = (byte) 1
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(byte~) main::$2 reg byte a 202.0
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@7
(label) main::@8
(label) main::@return
(byte*) main::CHAR_A
(const byte*) main::CHAR_A#0 CHAR_A = (const byte*) CHARGEN#0+(byte) 8
(byte) main::bits
(byte) main::bits#0 bits zp ZP_BYTE:3 22.0
(byte) main::bits#1 bits zp ZP_BYTE:3 67.33333333333333
(byte) main::bits#2 bits zp ZP_BYTE:3 52.33333333333333
(byte*) main::sc
(byte*) main::sc#1 sc zp ZP_PTR_BYTE:4 53.25
(byte*) main::sc#2 sc zp ZP_PTR_BYTE:4 7.333333333333333
(byte*) main::sc#3 sc zp ZP_PTR_BYTE:4 83.0
(byte*) main::sc#8 sc zp ZP_PTR_BYTE:4 11.0
(byte) main::x
(byte) main::x#1 reg byte x 151.5
(byte) main::x#2 reg byte x 28.857142857142858
(byte) main::y
(byte) main::y#1 y zp ZP_BYTE:2 16.5
(byte) main::y#2 y zp ZP_BYTE:2 2.75
zp ZP_BYTE:2 [ main::y#2 main::y#1 ]
zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ]
zp ZP_PTR_BYTE:4 [ main::sc#3 main::sc#8 main::sc#2 main::sc#1 ]
reg byte x [ main::x#2 main::x#1 ]
reg byte a [ main::$2 ]

View File

@ -10,7 +10,7 @@ void main() {
if(++i==8) {
i = 0;
}
} while(++cursor<SCREEN+1000)
} while(++cursor<SCREEN+1000);
}
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
Adding pre/post-modifier (byte*) main::cursor ← ++ (byte*) main::cursor

View File

@ -4,7 +4,7 @@ void main() {
do {
buf[i] = 2+i+2;
i = i+1;
} while(i<10)
} while(i<10);
}
PROGRAM
proc (void()) main()

View File

@ -6,7 +6,7 @@ void main() {
s=s+i;
}
i--;
} while (i>0)
} while (i>0);
}
Adding pre/post-modifier (byte) main::i ← -- (byte) main::i
PROGRAM

View File

@ -4,14 +4,14 @@ void main() {
byte i=100;
do {
nest();
} while (--i>0)
} while (--i>0);
}
void nest() {
byte j=100;
do {
*SCREEN = j;
} while (--j>0)
} while (--j>0);
}
Adding pre/post-modifier (byte) main::i ← -- (byte) main::i

View File

@ -6,8 +6,8 @@ void main() {
byte j=100;
do {
nest1();
} while (--j>0)
} while (--i>0)
} while (--j>0);
} while (--i>0);
}
void nest1() {
@ -16,8 +16,8 @@ void nest1() {
byte j=100;
do {
nest2();
} while (--j>0)
} while (--i>0)
} while (--j>0);
} while (--i>0);
}
void nest2() {
@ -26,8 +26,8 @@ void nest2() {
byte j=100;
do {
*SCREEN = j;
} while (--j>0)
} while (--i>0)
} while (--j>0);
} while (--i>0);
}
Adding pre/post-modifier (byte) main::j ← -- (byte) main::j

View File

@ -13,7 +13,7 @@ void main() {
}
SCREEN[++i] = c;
nxt++;
} while (true)
} while (true);
}
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i

View File

@ -11,8 +11,8 @@ void main() {
byte[] line = SCREEN+40;
do {
// Wait for raster
do {} while(*RASTER!=$fe)
do {} while(*RASTER!=$ff)
do {} while(*RASTER!=$fe);
do {} while(*RASTER!=$ff);
*BGCOL = *BGCOL+1;
// Soft scroll
if(--scroll==$ff) {
@ -32,7 +32,7 @@ void main() {
}
*SCROLL = scroll;
*BGCOL = *BGCOL-1;
} while(true)
} while(true);
}
void fillscreen(byte* screen, byte fill) {

View File

@ -17,7 +17,7 @@ void main() {
do {
render();
animate();
} while(true)
} while(true);
}
void animate() {

View File

@ -13,5 +13,5 @@ void main() {
}
SCREEN[++i] = c;
nxt++;
} while (true)
} while (true);
}

View File

@ -11,8 +11,8 @@ void main() {
byte[] line = SCREEN+40;
do {
// Wait for raster
do {} while(*RASTER!=$fe)
do {} while(*RASTER!=$ff)
do {} while(*RASTER!=$fe);
do {} while(*RASTER!=$ff);
*BGCOL = *BGCOL+1;
// Soft scroll
if(--scroll==$ff) {
@ -32,7 +32,7 @@ void main() {
}
*SCROLL = scroll;
*BGCOL = *BGCOL-1;
} while(true)
} while(true);
}
void fillscreen(byte* screen, byte fill) {

View File

@ -17,7 +17,7 @@ void main() {
do {
render();
animate();
} while(true)
} while(true);
}
void animate() {