mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-01-02 05:30:53 +00:00
Added missing fragment for Scan/Desire.
This commit is contained in:
parent
db733eec53
commit
8898dfb255
10
src/main/fragment/pbuc1_derefidx_vwuz1=vbuaa.asm
Normal file
10
src/main/fragment/pbuc1_derefidx_vwuz1=vbuaa.asm
Normal file
@ -0,0 +1,10 @@
|
||||
sta !v+ +1
|
||||
lda #<{c1}
|
||||
clc
|
||||
adc {z1}
|
||||
sta !a+ +1
|
||||
lda #>{c1}
|
||||
adc {z1}+1
|
||||
sta !a+ +2
|
||||
!v: lda #0
|
||||
!a: sta {c1}
|
@ -54,6 +54,11 @@ public class TestPrograms {
|
||||
compileAndCompare("examples/tetris/tetris");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScanDesireProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("scan-desire-problem");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClobberAProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("clobber-a-problem");
|
||||
|
66
src/test/kc/scan-desire-problem.kc
Normal file
66
src/test/kc/scan-desire-problem.kc
Normal file
@ -0,0 +1,66 @@
|
||||
// Illustrates a problem with a missing fragment - pbuc1_derefidx_vwuz1=vbuz2
|
||||
import "c64.kc"
|
||||
import "keyboard.kc"
|
||||
import "memory.kc"
|
||||
import "multiply.kc"
|
||||
|
||||
const byte* screen = $400;
|
||||
const byte* charset = $2000;
|
||||
const byte* tileset = $2800;
|
||||
const byte* colors = $d800;
|
||||
const byte* level_address = $3000;
|
||||
|
||||
void main() {
|
||||
init();
|
||||
for (byte x = 0; x < 16; x++ ){
|
||||
for (byte y = 0; y < 9; y++) {
|
||||
byte z = x+y;
|
||||
byte tile = level_address[z];
|
||||
draw_block(tile,x,y,YELLOW);
|
||||
}
|
||||
}
|
||||
do {
|
||||
} while(true);
|
||||
}
|
||||
|
||||
void init() {
|
||||
init_sprites();
|
||||
fill(screen,1000,0);
|
||||
fill(colors,1000,BLACK);
|
||||
*D018 = toD018(screen, charset);
|
||||
asm {
|
||||
lda #$5b // as there are more than 256 rasterlines, the topmost bit of $d011 serves as
|
||||
sta $d011 // the 8th bit for the rasterline we want our irq to be triggered.
|
||||
}
|
||||
*BORDERCOL = BLACK;
|
||||
*BGCOL1 = BLACK;
|
||||
*BGCOL2 = RED;
|
||||
*BGCOL3 = BLUE;
|
||||
*BGCOL4 = GREEN;
|
||||
}
|
||||
|
||||
void init_sprites() {
|
||||
*SPRITES_ENABLE = %00000001; // one sprite enabled
|
||||
*SPRITES_EXPAND_X = 0;
|
||||
*SPRITES_EXPAND_Y = 0;
|
||||
*SPRITES_XMSB = 0;
|
||||
*SPRITES_COLS = WHITE;
|
||||
*SPRITES_MC = 0;
|
||||
}
|
||||
|
||||
void draw_block(byte tileno, byte x, byte y, byte color) {
|
||||
tileno = tileno << 2;
|
||||
word x1 = x << 1;
|
||||
y = y << 1;
|
||||
word z = mul8u(y,40);
|
||||
z = z + x1;
|
||||
byte drawtile = tileset[tileno];
|
||||
screen[z] = drawtile;
|
||||
colors[z] = YELLOW;
|
||||
screen[z+1] = 1;
|
||||
colors[z+1] = YELLOW;
|
||||
screen[z+40] = 2;
|
||||
colors[z+40] = YELLOW;
|
||||
screen[z+41] = 3;
|
||||
colors[z+41] = YELLOW;
|
||||
}
|
270
src/test/ref/scan-desire-problem.asm
Normal file
270
src/test/ref/scan-desire-problem.asm
Normal file
@ -0,0 +1,270 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL1 = $d021
|
||||
.label BGCOL2 = $d022
|
||||
.label BGCOL3 = $d023
|
||||
.label BGCOL4 = $d024
|
||||
.label SPRITES_COLS = $d027
|
||||
.label D018 = $d018
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const RED = 2
|
||||
.const GREEN = 5
|
||||
.const BLUE = 6
|
||||
.const YELLOW = 7
|
||||
.label screen = $400
|
||||
.label charset = $2000
|
||||
.label tileset = $2800
|
||||
.label colors = $d800
|
||||
.label level_address = $3000
|
||||
main: {
|
||||
.label y = 3
|
||||
.label x = 2
|
||||
jsr init
|
||||
lda #0
|
||||
sta x
|
||||
b1:
|
||||
lda #0
|
||||
sta y
|
||||
b2:
|
||||
lda x
|
||||
clc
|
||||
adc y
|
||||
tay
|
||||
lda level_address,y
|
||||
ldy x
|
||||
ldx y
|
||||
jsr draw_block
|
||||
inc y
|
||||
lda y
|
||||
cmp #9
|
||||
bcc b2
|
||||
inc x
|
||||
lda x
|
||||
cmp #$10
|
||||
bcc b1
|
||||
b3:
|
||||
jmp b3
|
||||
}
|
||||
draw_block: {
|
||||
.label tileno = 8
|
||||
.label x1 = 9
|
||||
.label z = 4
|
||||
.label z_1 = 9
|
||||
asl
|
||||
asl
|
||||
sta tileno
|
||||
tya
|
||||
asl
|
||||
sta x1
|
||||
lda #0
|
||||
sta x1+1
|
||||
txa
|
||||
asl
|
||||
tax
|
||||
jsr mul8u
|
||||
lda z_1
|
||||
clc
|
||||
adc z
|
||||
sta z_1
|
||||
lda z_1+1
|
||||
adc z+1
|
||||
sta z_1+1
|
||||
ldy tileno
|
||||
lda tileset,y
|
||||
sta !v++1
|
||||
lda #<screen
|
||||
clc
|
||||
adc z_1
|
||||
sta !a++1
|
||||
lda #>screen
|
||||
adc z_1+1
|
||||
sta !a++2
|
||||
!v:
|
||||
lda #0
|
||||
!a:
|
||||
sta screen
|
||||
lda #<colors
|
||||
clc
|
||||
adc z_1
|
||||
sta !++1
|
||||
lda #>colors
|
||||
adc z_1+1
|
||||
sta !++2
|
||||
lda #YELLOW
|
||||
!:
|
||||
sta colors
|
||||
lda #<screen+1
|
||||
clc
|
||||
adc z_1
|
||||
sta !++1
|
||||
lda #>screen+1
|
||||
adc z_1+1
|
||||
sta !++2
|
||||
lda #1
|
||||
!:
|
||||
sta screen+1
|
||||
lda #<colors+1
|
||||
clc
|
||||
adc z_1
|
||||
sta !++1
|
||||
lda #>colors+1
|
||||
adc z_1+1
|
||||
sta !++2
|
||||
lda #YELLOW
|
||||
!:
|
||||
sta colors+1
|
||||
lda #<screen+$28
|
||||
clc
|
||||
adc z_1
|
||||
sta !++1
|
||||
lda #>screen+$28
|
||||
adc z_1+1
|
||||
sta !++2
|
||||
lda #2
|
||||
!:
|
||||
sta screen+$28
|
||||
lda #<colors+$28
|
||||
clc
|
||||
adc z_1
|
||||
sta !++1
|
||||
lda #>colors+$28
|
||||
adc z_1+1
|
||||
sta !++2
|
||||
lda #YELLOW
|
||||
!:
|
||||
sta colors+$28
|
||||
lda #<screen+$29
|
||||
clc
|
||||
adc z_1
|
||||
sta !++1
|
||||
lda #>screen+$29
|
||||
adc z_1+1
|
||||
sta !++2
|
||||
lda #3
|
||||
!:
|
||||
sta screen+$29
|
||||
lda #<colors+$29
|
||||
clc
|
||||
adc z_1
|
||||
sta !++1
|
||||
lda #>colors+$29
|
||||
adc z_1+1
|
||||
sta !++2
|
||||
lda #YELLOW
|
||||
!:
|
||||
sta colors+$29
|
||||
rts
|
||||
}
|
||||
mul8u: {
|
||||
.const b = $28
|
||||
.label mb = 6
|
||||
.label res = 4
|
||||
.label return = 4
|
||||
lda #<b
|
||||
sta mb
|
||||
lda #>b
|
||||
sta mb+1
|
||||
lda #<0
|
||||
sta res
|
||||
sta res+1
|
||||
b1:
|
||||
cpx #0
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
txa
|
||||
and #1
|
||||
cmp #0
|
||||
beq b4
|
||||
lda res
|
||||
clc
|
||||
adc mb
|
||||
sta res
|
||||
lda res+1
|
||||
adc mb+1
|
||||
sta res+1
|
||||
b4:
|
||||
txa
|
||||
lsr
|
||||
tax
|
||||
asl mb
|
||||
rol mb+1
|
||||
jmp b1
|
||||
}
|
||||
init: {
|
||||
.const toD0181_return = (>(screen&$3fff)<<2)|(>charset)>>2&$f
|
||||
jsr init_sprites
|
||||
ldx #0
|
||||
lda #<screen
|
||||
sta fill.addr
|
||||
lda #>screen
|
||||
sta fill.addr+1
|
||||
jsr fill
|
||||
ldx #BLACK
|
||||
lda #<colors
|
||||
sta fill.addr
|
||||
lda #>colors
|
||||
sta fill.addr+1
|
||||
jsr fill
|
||||
lda #toD0181_return
|
||||
sta D018
|
||||
lda #$5b
|
||||
sta $d011
|
||||
lda #BLACK
|
||||
sta BORDERCOL
|
||||
sta BGCOL1
|
||||
lda #RED
|
||||
sta BGCOL2
|
||||
lda #BLUE
|
||||
sta BGCOL3
|
||||
lda #GREEN
|
||||
sta BGCOL4
|
||||
rts
|
||||
}
|
||||
fill: {
|
||||
.label end = 6
|
||||
.label addr = 4
|
||||
lda addr
|
||||
clc
|
||||
adc #<$3e8
|
||||
sta end
|
||||
lda addr+1
|
||||
adc #>$3e8
|
||||
sta end+1
|
||||
b1:
|
||||
txa
|
||||
ldy #0
|
||||
sta (addr),y
|
||||
inc addr
|
||||
bne !+
|
||||
inc addr+1
|
||||
!:
|
||||
lda addr+1
|
||||
cmp end+1
|
||||
bne b1
|
||||
lda addr
|
||||
cmp end
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
init_sprites: {
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
lda #0
|
||||
sta SPRITES_EXPAND_X
|
||||
sta SPRITES_EXPAND_Y
|
||||
sta SPRITES_XMSB
|
||||
lda #WHITE
|
||||
sta SPRITES_COLS
|
||||
lda #0
|
||||
sta SPRITES_MC
|
||||
rts
|
||||
}
|
137
src/test/ref/scan-desire-problem.cfg
Normal file
137
src/test/ref/scan-desire-problem.cfg
Normal file
@ -0,0 +1,137 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@21
|
||||
@21: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @21
|
||||
[3] phi()
|
||||
main: scope:[main] from @21
|
||||
[4] phi()
|
||||
[5] call init
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@4
|
||||
[6] (byte) main::x#4 ← phi( main::@4/(byte) main::x#1 main/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@8
|
||||
[7] (byte) main::y#2 ← phi( main::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@8/(byte) main::y#1 )
|
||||
[8] (byte) main::z#0 ← (byte) main::x#4 + (byte) main::y#2
|
||||
[9] (byte) main::tile#0 ← *((const byte*) level_address#0 + (byte) main::z#0)
|
||||
[10] (byte) draw_block::tileno#0 ← (byte) main::tile#0
|
||||
[11] (byte) draw_block::x#0 ← (byte) main::x#4
|
||||
[12] (byte) draw_block::y#0 ← (byte) main::y#2
|
||||
[13] call draw_block
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@2
|
||||
[14] (byte) main::y#1 ← ++ (byte) main::y#2
|
||||
[15] if((byte) main::y#1<(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@8
|
||||
[16] (byte) main::x#1 ← ++ (byte) main::x#4
|
||||
[17] if((byte) main::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@3 main::@4
|
||||
[18] phi()
|
||||
to:main::@3
|
||||
draw_block: scope:[draw_block] from main::@2
|
||||
[19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[20] (byte~) draw_block::$1 ← (byte) draw_block::x#0 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[21] (word) draw_block::x1#0 ← ((word)) (byte~) draw_block::$1
|
||||
[22] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[23] (byte) mul8u::a#1 ← (byte) draw_block::y#1
|
||||
[24] call mul8u
|
||||
[25] (word) mul8u::return#2 ← (word) mul8u::res#2
|
||||
to:draw_block::@1
|
||||
draw_block::@1: scope:[draw_block] from draw_block
|
||||
[26] (word) draw_block::z#0 ← (word) mul8u::return#2
|
||||
[27] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0
|
||||
[28] (byte) draw_block::drawtile#0 ← *((const byte*) tileset#0 + (byte) draw_block::tileno#1)
|
||||
[29] *((const byte*) screen#0 + (word) draw_block::z#1) ← (byte) draw_block::drawtile#0
|
||||
[30] *((const byte*) colors#0 + (word) draw_block::z#1) ← (const byte) YELLOW#0
|
||||
[31] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word) draw_block::z#1) ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[32] *((const byte*) colors#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word) draw_block::z#1) ← (const byte) YELLOW#0
|
||||
[33] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word) draw_block::z#1) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[34] *((const byte*) colors#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word) draw_block::z#1) ← (const byte) YELLOW#0
|
||||
[35] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 41 + (word) draw_block::z#1) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[36] *((const byte*) colors#0+(byte/signed byte/word/signed word/dword/signed dword) 41 + (word) draw_block::z#1) ← (const byte) YELLOW#0
|
||||
to:draw_block::@return
|
||||
draw_block::@return: scope:[draw_block] from draw_block::@1
|
||||
[37] return
|
||||
to:@return
|
||||
mul8u: scope:[mul8u] from draw_block
|
||||
[38] phi()
|
||||
to:mul8u::@1
|
||||
mul8u::@1: scope:[mul8u] from mul8u mul8u::@4
|
||||
[39] (word) mul8u::mb#2 ← phi( mul8u/((word))(const byte) mul8u::b#0 mul8u::@4/(word) mul8u::mb#1 )
|
||||
[39] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 )
|
||||
[39] (byte) mul8u::a#2 ← phi( mul8u/(byte) mul8u::a#1 mul8u::@4/(byte) mul8u::a#0 )
|
||||
[40] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
|
||||
to:mul8u::@return
|
||||
mul8u::@return: scope:[mul8u] from mul8u::@1
|
||||
[41] return
|
||||
to:@return
|
||||
mul8u::@2: scope:[mul8u] from mul8u::@1
|
||||
[42] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[43] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
|
||||
to:mul8u::@7
|
||||
mul8u::@7: scope:[mul8u] from mul8u::@2
|
||||
[44] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
|
||||
to:mul8u::@4
|
||||
mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7
|
||||
[45] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 )
|
||||
[46] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[47] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul8u::@1
|
||||
init: scope:[init] from main
|
||||
[48] phi()
|
||||
[49] call init_sprites
|
||||
to:init::@2
|
||||
init::@2: scope:[init] from init
|
||||
[50] phi()
|
||||
[51] call fill
|
||||
to:init::@3
|
||||
init::@3: scope:[init] from init::@2
|
||||
[52] phi()
|
||||
[53] call fill
|
||||
to:init::toD0181
|
||||
init::toD0181: scope:[init] from init::@3
|
||||
[54] phi()
|
||||
to:init::@1
|
||||
init::@1: scope:[init] from init::toD0181
|
||||
[55] *((const byte*) D018#0) ← (const byte) init::toD0181_return#0
|
||||
asm { lda#$5b sta$d011 }
|
||||
[57] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0
|
||||
[58] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0
|
||||
[59] *((const byte*) BGCOL2#0) ← (const byte) RED#0
|
||||
[60] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0
|
||||
[61] *((const byte*) BGCOL4#0) ← (const byte) GREEN#0
|
||||
to:init::@return
|
||||
init::@return: scope:[init] from init::@1
|
||||
[62] return
|
||||
to:@return
|
||||
fill: scope:[fill] from init::@2 init::@3
|
||||
[63] (byte) fill::val#3 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@3/(const byte) BLACK#0 )
|
||||
[63] (byte*) fill::addr#0 ← phi( init::@2/(const byte*) screen#0 init::@3/(const byte*) colors#0 )
|
||||
[64] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
[65] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[66] *((byte*) fill::addr#2) ← (byte) fill::val#3
|
||||
[67] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[68] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
[69] return
|
||||
to:@return
|
||||
init_sprites: scope:[init_sprites] from init
|
||||
[70] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[71] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[72] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[73] *((const byte*) SPRITES_XMSB#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[74] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0
|
||||
[75] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:init_sprites::@return
|
||||
init_sprites::@return: scope:[init_sprites] from init_sprites
|
||||
[76] return
|
||||
to:@return
|
3572
src/test/ref/scan-desire-problem.log
Normal file
3572
src/test/ref/scan-desire-problem.log
Normal file
File diff suppressed because it is too large
Load Diff
296
src/test/ref/scan-desire-problem.sym
Normal file
296
src/test/ref/scan-desire-problem.sym
Normal file
@ -0,0 +1,296 @@
|
||||
(label) @21
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(const byte*) BGCOL1#0 BGCOL1 = ((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*) BGCOL4
|
||||
(const byte*) BGCOL4#0 BGCOL4 = ((byte*))(word/dword/signed dword) 53284
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(byte) KEY_1
|
||||
(byte) KEY_2
|
||||
(byte) KEY_3
|
||||
(byte) KEY_4
|
||||
(byte) KEY_5
|
||||
(byte) KEY_6
|
||||
(byte) KEY_7
|
||||
(byte) KEY_8
|
||||
(byte) KEY_9
|
||||
(byte) KEY_A
|
||||
(byte) KEY_ARROW_LEFT
|
||||
(byte) KEY_ARROW_UP
|
||||
(byte) KEY_ASTERISK
|
||||
(byte) KEY_AT
|
||||
(byte) KEY_B
|
||||
(byte) KEY_C
|
||||
(byte) KEY_COLON
|
||||
(byte) KEY_COMMA
|
||||
(byte) KEY_COMMODORE
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(byte) KEY_D
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(byte) KEY_E
|
||||
(byte) KEY_EQUALS
|
||||
(byte) KEY_F
|
||||
(byte) KEY_F1
|
||||
(byte) KEY_F3
|
||||
(byte) KEY_F5
|
||||
(byte) KEY_F7
|
||||
(byte) KEY_G
|
||||
(byte) KEY_H
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(byte) KEY_J
|
||||
(byte) KEY_K
|
||||
(byte) KEY_L
|
||||
(byte) KEY_LSHIFT
|
||||
(byte) KEY_M
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(byte) KEY_O
|
||||
(byte) KEY_P
|
||||
(byte) KEY_PLUS
|
||||
(byte) KEY_POUND
|
||||
(byte) KEY_Q
|
||||
(byte) KEY_R
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(byte) KEY_SEMICOLON
|
||||
(byte) KEY_SLASH
|
||||
(byte) KEY_SPACE
|
||||
(byte) KEY_T
|
||||
(byte) KEY_U
|
||||
(byte) KEY_V
|
||||
(byte) KEY_W
|
||||
(byte) KEY_X
|
||||
(byte) KEY_Y
|
||||
(byte) KEY_Z
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*) SPRITES_COLS
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_MC
|
||||
(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
(const byte) YELLOW#0 YELLOW = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) charset
|
||||
(const byte*) charset#0 charset = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte*) colors
|
||||
(const byte*) colors#0 colors = ((byte*))(word/dword/signed dword) 55296
|
||||
(void()) draw_block((byte) draw_block::tileno , (byte) draw_block::x , (byte) draw_block::y , (byte) draw_block::color)
|
||||
(byte~) draw_block::$1 reg byte a 4.0
|
||||
(label) draw_block::@1
|
||||
(label) draw_block::@return
|
||||
(byte) draw_block::color
|
||||
(byte) draw_block::drawtile
|
||||
(byte) draw_block::drawtile#0 reg byte a 4.0
|
||||
(byte) draw_block::tileno
|
||||
(byte) draw_block::tileno#0 reg byte a 34.33333333333333
|
||||
(byte) draw_block::tileno#1 tileno zp ZP_BYTE:8 0.4444444444444444
|
||||
(byte) draw_block::x
|
||||
(byte) draw_block::x#0 reg byte y 34.33333333333333
|
||||
(word) draw_block::x1
|
||||
(word) draw_block::x1#0 x1 zp ZP_WORD:9 0.6666666666666666
|
||||
(byte) draw_block::y
|
||||
(byte) draw_block::y#0 reg byte x 25.75
|
||||
(byte) draw_block::y#1 reg byte a 4.0
|
||||
(word) draw_block::z
|
||||
(word) draw_block::z#0 z zp ZP_WORD:4 4.0
|
||||
(word) draw_block::z#1 z#1 zp ZP_WORD:9 2.0000000000000004
|
||||
(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:6 2.6
|
||||
(word) fill::size
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#3 reg byte x 1.8333333333333333
|
||||
(void()) init()
|
||||
(label) init::@1
|
||||
(label) init::@2
|
||||
(label) init::@3
|
||||
(label) init::@return
|
||||
(label) init::toD0181
|
||||
(word~) init::toD0181_$0
|
||||
(word~) init::toD0181_$1
|
||||
(word~) init::toD0181_$2
|
||||
(byte~) init::toD0181_$3
|
||||
(word~) init::toD0181_$4
|
||||
(byte~) init::toD0181_$5
|
||||
(byte~) init::toD0181_$6
|
||||
(byte~) init::toD0181_$7
|
||||
(byte~) init::toD0181_$8
|
||||
(byte*) init::toD0181_gfx
|
||||
(byte) init::toD0181_return
|
||||
(const byte) init::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*) charset#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
(byte*) init::toD0181_screen
|
||||
(void()) init_sprites()
|
||||
(label) init_sprites::@return
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte[8]) keyboard_events
|
||||
(byte) keyboard_events_size
|
||||
(byte[8]) keyboard_matrix_col_bitmask
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(byte) keyboard_modifiers
|
||||
(byte[8]) keyboard_scan_values
|
||||
(byte*) level_address
|
||||
(const byte*) level_address#0 level_address = ((byte*))(word/signed word/dword/signed dword) 12288
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@8
|
||||
(byte) main::tile
|
||||
(byte) main::tile#0 reg byte a 202.0
|
||||
(byte) main::x
|
||||
(byte) main::x#1 x zp ZP_BYTE:2 16.5
|
||||
(byte) main::x#4 x zp ZP_BYTE:2 22.4
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp ZP_BYTE:3 151.5
|
||||
(byte) main::y#2 y zp ZP_BYTE:3 57.714285714285715
|
||||
(byte) main::z
|
||||
(byte) main::z#0 reg byte a 202.0
|
||||
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
|
||||
(byte~) mul8u::$1 reg byte a 2002.0
|
||||
(label) mul8u::@1
|
||||
(label) mul8u::@2
|
||||
(label) mul8u::@4
|
||||
(label) mul8u::@7
|
||||
(label) mul8u::@return
|
||||
(byte) mul8u::a
|
||||
(byte) mul8u::a#0 reg byte x 1001.0
|
||||
(byte) mul8u::a#1 reg byte x 2.0
|
||||
(byte) mul8u::a#2 reg byte x 667.6666666666667
|
||||
(byte) mul8u::b
|
||||
(const byte) mul8u::b#0 b = (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
(word) mul8u::mb
|
||||
(word) mul8u::mb#1 mb zp ZP_WORD:6 2002.0
|
||||
(word) mul8u::mb#2 mb zp ZP_WORD:6 429.0
|
||||
(word) mul8u::res
|
||||
(word) mul8u::res#1 res zp ZP_WORD:4 2002.0
|
||||
(word) mul8u::res#2 res zp ZP_WORD:4 500.83333333333337
|
||||
(word) mul8u::res#6 res zp ZP_WORD:4 1001.0
|
||||
(word) mul8u::return
|
||||
(word) mul8u::return#2 return zp ZP_WORD:4 4.0
|
||||
(byte*) screen
|
||||
(const byte*) screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) tileset
|
||||
(const byte*) tileset#0 tileset = ((byte*))(word/signed word/dword/signed dword) 10240
|
||||
|
||||
zp ZP_BYTE:2 [ main::x#4 main::x#1 ]
|
||||
zp ZP_BYTE:3 [ main::y#2 main::y#1 ]
|
||||
reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
|
||||
zp ZP_WORD:4 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 draw_block::z#0 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp ZP_WORD:6 [ mul8u::mb#2 mul8u::mb#1 fill::end#0 ]
|
||||
reg byte x [ fill::val#3 ]
|
||||
reg byte a [ main::z#0 ]
|
||||
reg byte a [ main::tile#0 ]
|
||||
reg byte a [ draw_block::tileno#0 ]
|
||||
reg byte y [ draw_block::x#0 ]
|
||||
reg byte x [ draw_block::y#0 ]
|
||||
zp ZP_BYTE:8 [ draw_block::tileno#1 ]
|
||||
reg byte a [ draw_block::$1 ]
|
||||
zp ZP_WORD:9 [ draw_block::x1#0 draw_block::z#1 ]
|
||||
reg byte a [ draw_block::y#1 ]
|
||||
reg byte a [ draw_block::drawtile#0 ]
|
||||
reg byte a [ mul8u::$1 ]
|
Loading…
Reference in New Issue
Block a user