|
|
|
@ -1510,7 +1510,6 @@ main: {
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
|
|
|
|
|
lda e
|
|
|
|
|
sec
|
|
|
|
|
sbc #xd
|
|
|
|
|
sta e
|
|
|
|
@ -1558,12 +1557,13 @@ REGISTER UPLIFT SCOPES
|
|
|
|
|
Uplift Scope [main] 55: zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] 29.33: zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
|
|
|
|
Uplift Scope []
|
|
|
|
|
|
|
|
|
|
Uplifting [main] best 1165 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
|
|
|
|
Uplifting [] best 1165 combination
|
|
|
|
|
Uplifting [main] best 1145 combination zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] reg byte x [ main::x#2 main::x#1 ]
|
|
|
|
|
Uplifting [] best 1145 combination
|
|
|
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
|
|
|
|
Uplifting [main] best 1145 combination zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
|
|
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
|
|
|
|
Uplifting [main] best 1165 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
|
|
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
|
|
|
|
Uplifting [main] best 1165 combination zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
|
|
|
|
Uplifting [main] best 1145 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
|
|
|
|
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
|
|
|
|
Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ]
|
|
|
|
|
Removing instruction jmp bend
|
|
|
|
|
Removing instruction jmp b1
|
|
|
|
@ -1589,19 +1589,19 @@ main: {
|
|
|
|
|
.const y1 = $18
|
|
|
|
|
.const xd = x1-4
|
|
|
|
|
.const yd = y1-4
|
|
|
|
|
.label x = 4
|
|
|
|
|
.label cursor = 2
|
|
|
|
|
.label e = 4
|
|
|
|
|
.label y = 5
|
|
|
|
|
//SEG6 [2] phi from main to main::@1
|
|
|
|
|
b1_from_main:
|
|
|
|
|
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
lda #4
|
|
|
|
|
sta y
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
|
|
|
|
|
ldx #yd/2
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
lda #4
|
|
|
|
|
sta x
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
|
|
|
|
|
lda #yd/2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
|
|
|
|
|
ldx #4
|
|
|
|
|
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
|
|
|
|
|
lda #<SCREEN+4*$28+4
|
|
|
|
|
sta cursor
|
|
|
|
@ -1620,21 +1620,22 @@ main: {
|
|
|
|
|
ldy #0
|
|
|
|
|
lda #STAR
|
|
|
|
|
sta (cursor),y
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc x
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
|
|
|
|
|
inx
|
|
|
|
|
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
|
|
|
|
|
inc cursor
|
|
|
|
|
bne !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
|
|
|
|
|
lda e
|
|
|
|
|
clc
|
|
|
|
|
adc #yd
|
|
|
|
|
tax
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
|
|
|
|
|
cpx #xd
|
|
|
|
|
bcc b2_from_b1
|
|
|
|
|
sta e
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
|
|
|
|
|
lda #xd
|
|
|
|
|
cmp e
|
|
|
|
|
bcs b2_from_b1
|
|
|
|
|
//SEG22 main::@3
|
|
|
|
|
b3:
|
|
|
|
|
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
@ -1647,11 +1648,10 @@ main: {
|
|
|
|
|
bcc !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
|
|
|
|
|
sec
|
|
|
|
|
sbc #xd
|
|
|
|
|
tax
|
|
|
|
|
sta e
|
|
|
|
|
//SEG26 [11] phi from main::@1 main::@3 to main::@2
|
|
|
|
|
b2_from_b1:
|
|
|
|
|
b2_from_b3:
|
|
|
|
@ -1660,109 +1660,8 @@ main: {
|
|
|
|
|
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
|
|
|
|
|
//SEG30 main::@2
|
|
|
|
|
b2:
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
|
|
|
|
|
lda x
|
|
|
|
|
cmp #x1+1
|
|
|
|
|
bcc b1_from_b2
|
|
|
|
|
//SEG32 main::@return
|
|
|
|
|
breturn:
|
|
|
|
|
//SEG33 [13] return [ ]
|
|
|
|
|
rts
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Removing instruction lda #4
|
|
|
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
|
|
|
ASSEMBLER
|
|
|
|
|
//SEG0 Global Constants & labels
|
|
|
|
|
.const STAR = $51
|
|
|
|
|
.const SCREEN = $400
|
|
|
|
|
//SEG1 @begin
|
|
|
|
|
bbegin:
|
|
|
|
|
//SEG2 [0] call main param-assignment [ ]
|
|
|
|
|
//SEG3 [1] phi from @begin to main
|
|
|
|
|
main_from_bbegin:
|
|
|
|
|
jsr main
|
|
|
|
|
//SEG4 @end
|
|
|
|
|
bend:
|
|
|
|
|
//SEG5 main
|
|
|
|
|
main: {
|
|
|
|
|
.const x1 = $27
|
|
|
|
|
.const y1 = $18
|
|
|
|
|
.const xd = x1-4
|
|
|
|
|
.const yd = y1-4
|
|
|
|
|
.label x = 4
|
|
|
|
|
.label cursor = 2
|
|
|
|
|
.label y = 5
|
|
|
|
|
//SEG6 [2] phi from main to main::@1
|
|
|
|
|
b1_from_main:
|
|
|
|
|
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
lda #4
|
|
|
|
|
sta y
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
|
|
|
|
|
ldx #yd/2
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
sta x
|
|
|
|
|
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
|
|
|
|
|
lda #<SCREEN+4*$28+4
|
|
|
|
|
sta cursor
|
|
|
|
|
lda #>SCREEN+4*$28+4
|
|
|
|
|
sta cursor+1
|
|
|
|
|
jmp b1
|
|
|
|
|
//SEG11 [2] phi from main::@2 to main::@1
|
|
|
|
|
b1_from_b2:
|
|
|
|
|
//SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 -- register_copy
|
|
|
|
|
//SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 -- register_copy
|
|
|
|
|
//SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 -- register_copy
|
|
|
|
|
//SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 -- register_copy
|
|
|
|
|
//SEG16 main::@1
|
|
|
|
|
b1:
|
|
|
|
|
//SEG17 [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] -- _star_zpptrby1=coby1
|
|
|
|
|
ldy #0
|
|
|
|
|
lda #STAR
|
|
|
|
|
sta (cursor),y
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc x
|
|
|
|
|
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
|
|
|
|
|
inc cursor
|
|
|
|
|
bne !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
|
|
|
|
|
txa
|
|
|
|
|
clc
|
|
|
|
|
adc #yd
|
|
|
|
|
tax
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
|
|
|
|
|
cpx #xd
|
|
|
|
|
bcc b2_from_b1
|
|
|
|
|
//SEG22 main::@3
|
|
|
|
|
b3:
|
|
|
|
|
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc y
|
|
|
|
|
//SEG24 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] -- zpptrby1=zpptrby1_plus_coby1
|
|
|
|
|
lda cursor
|
|
|
|
|
clc
|
|
|
|
|
adc #$28
|
|
|
|
|
sta cursor
|
|
|
|
|
bcc !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
|
|
|
|
|
txa
|
|
|
|
|
sec
|
|
|
|
|
sbc #xd
|
|
|
|
|
tax
|
|
|
|
|
//SEG26 [11] phi from main::@1 main::@3 to main::@2
|
|
|
|
|
b2_from_b1:
|
|
|
|
|
b2_from_b3:
|
|
|
|
|
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
|
|
|
|
|
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
|
|
|
|
|
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
|
|
|
|
|
//SEG30 main::@2
|
|
|
|
|
b2:
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
|
|
|
|
|
lda x
|
|
|
|
|
cmp #x1+1
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
|
|
|
|
|
cpx #x1+1
|
|
|
|
|
bcc b1_from_b2
|
|
|
|
|
//SEG32 main::@return
|
|
|
|
|
breturn:
|
|
|
|
@ -1794,18 +1693,19 @@ main: {
|
|
|
|
|
.const y1 = $18
|
|
|
|
|
.const xd = x1-4
|
|
|
|
|
.const yd = y1-4
|
|
|
|
|
.label x = 4
|
|
|
|
|
.label cursor = 2
|
|
|
|
|
.label e = 4
|
|
|
|
|
.label y = 5
|
|
|
|
|
//SEG6 [2] phi from main to main::@1
|
|
|
|
|
b1_from_main:
|
|
|
|
|
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
lda #4
|
|
|
|
|
sta y
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
|
|
|
|
|
ldx #yd/2
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
sta x
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
|
|
|
|
|
lda #yd/2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
|
|
|
|
|
ldx #4
|
|
|
|
|
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
|
|
|
|
|
lda #<SCREEN+4*$28+4
|
|
|
|
|
sta cursor
|
|
|
|
@ -1823,21 +1723,22 @@ main: {
|
|
|
|
|
ldy #0
|
|
|
|
|
lda #STAR
|
|
|
|
|
sta (cursor),y
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc x
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
|
|
|
|
|
inx
|
|
|
|
|
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
|
|
|
|
|
inc cursor
|
|
|
|
|
bne !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
|
|
|
|
|
lda e
|
|
|
|
|
clc
|
|
|
|
|
adc #yd
|
|
|
|
|
tax
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
|
|
|
|
|
cpx #xd
|
|
|
|
|
bcc b2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
|
|
|
|
|
lda #xd
|
|
|
|
|
cmp e
|
|
|
|
|
bcs b2
|
|
|
|
|
//SEG22 main::@3
|
|
|
|
|
b3:
|
|
|
|
|
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
@ -1850,20 +1751,18 @@ main: {
|
|
|
|
|
bcc !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
|
|
|
|
|
sec
|
|
|
|
|
sbc #xd
|
|
|
|
|
tax
|
|
|
|
|
sta e
|
|
|
|
|
//SEG26 [11] phi from main::@1 main::@3 to main::@2
|
|
|
|
|
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
|
|
|
|
|
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
|
|
|
|
|
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
|
|
|
|
|
//SEG30 main::@2
|
|
|
|
|
b2:
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
|
|
|
|
|
lda x
|
|
|
|
|
cmp #x1+1
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
|
|
|
|
|
cpx #x1+1
|
|
|
|
|
bcc b1
|
|
|
|
|
//SEG32 main::@return
|
|
|
|
|
breturn:
|
|
|
|
@ -1892,17 +1791,18 @@ main: {
|
|
|
|
|
.const y1 = $18
|
|
|
|
|
.const xd = x1-4
|
|
|
|
|
.const yd = y1-4
|
|
|
|
|
.label x = 4
|
|
|
|
|
.label cursor = 2
|
|
|
|
|
.label e = 4
|
|
|
|
|
.label y = 5
|
|
|
|
|
//SEG6 [2] phi from main to main::@1
|
|
|
|
|
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
lda #4
|
|
|
|
|
sta y
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
|
|
|
|
|
ldx #yd/2
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
sta x
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
|
|
|
|
|
lda #yd/2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
|
|
|
|
|
ldx #4
|
|
|
|
|
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
|
|
|
|
|
lda #<SCREEN+4*$28+4
|
|
|
|
|
sta cursor
|
|
|
|
@ -1920,21 +1820,22 @@ main: {
|
|
|
|
|
ldy #0
|
|
|
|
|
lda #STAR
|
|
|
|
|
sta (cursor),y
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc x
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
|
|
|
|
|
inx
|
|
|
|
|
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
|
|
|
|
|
inc cursor
|
|
|
|
|
bne !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
|
|
|
|
|
lda e
|
|
|
|
|
clc
|
|
|
|
|
adc #yd
|
|
|
|
|
tax
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
|
|
|
|
|
cpx #xd
|
|
|
|
|
bcc b2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
|
|
|
|
|
lda #xd
|
|
|
|
|
cmp e
|
|
|
|
|
bcs b2
|
|
|
|
|
//SEG22 main::@3
|
|
|
|
|
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc y
|
|
|
|
@ -1946,20 +1847,18 @@ main: {
|
|
|
|
|
bcc !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
|
|
|
|
|
sec
|
|
|
|
|
sbc #xd
|
|
|
|
|
tax
|
|
|
|
|
sta e
|
|
|
|
|
//SEG26 [11] phi from main::@1 main::@3 to main::@2
|
|
|
|
|
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
|
|
|
|
|
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
|
|
|
|
|
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
|
|
|
|
|
//SEG30 main::@2
|
|
|
|
|
b2:
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
|
|
|
|
|
lda x
|
|
|
|
|
cmp #x1+1
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
|
|
|
|
|
cpx #x1+1
|
|
|
|
|
bcc b1
|
|
|
|
|
//SEG32 main::@return
|
|
|
|
|
//SEG33 [13] return [ ]
|
|
|
|
@ -1983,17 +1882,18 @@ main: {
|
|
|
|
|
.const y1 = $18
|
|
|
|
|
.const xd = x1-4
|
|
|
|
|
.const yd = y1-4
|
|
|
|
|
.label x = 4
|
|
|
|
|
.label cursor = 2
|
|
|
|
|
.label e = 4
|
|
|
|
|
.label y = 5
|
|
|
|
|
//SEG6 [2] phi from main to main::@1
|
|
|
|
|
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
lda #4
|
|
|
|
|
sta y
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
|
|
|
|
|
ldx #yd/2
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
sta x
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
|
|
|
|
|
lda #yd/2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
|
|
|
|
|
ldx #4
|
|
|
|
|
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
|
|
|
|
|
lda #<SCREEN+4*$28+4
|
|
|
|
|
sta cursor
|
|
|
|
@ -2010,21 +1910,22 @@ main: {
|
|
|
|
|
ldy #0
|
|
|
|
|
lda #STAR
|
|
|
|
|
sta (cursor),y
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc x
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
|
|
|
|
|
inx
|
|
|
|
|
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
|
|
|
|
|
inc cursor
|
|
|
|
|
bne !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
|
|
|
|
|
lda e
|
|
|
|
|
clc
|
|
|
|
|
adc #yd
|
|
|
|
|
tax
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
|
|
|
|
|
cpx #xd
|
|
|
|
|
bcc b2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
|
|
|
|
|
lda #xd
|
|
|
|
|
cmp e
|
|
|
|
|
bcs b2
|
|
|
|
|
//SEG22 main::@3
|
|
|
|
|
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc y
|
|
|
|
@ -2036,20 +1937,18 @@ main: {
|
|
|
|
|
bcc !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
|
|
|
|
|
sec
|
|
|
|
|
sbc #xd
|
|
|
|
|
tax
|
|
|
|
|
sta e
|
|
|
|
|
//SEG26 [11] phi from main::@1 main::@3 to main::@2
|
|
|
|
|
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
|
|
|
|
|
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
|
|
|
|
|
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
|
|
|
|
|
//SEG30 main::@2
|
|
|
|
|
b2:
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
|
|
|
|
|
lda x
|
|
|
|
|
cmp #x1+1
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
|
|
|
|
|
cpx #x1+1
|
|
|
|
|
bcc b1
|
|
|
|
|
//SEG32 main::@return
|
|
|
|
|
//SEG33 [13] return [ ]
|
|
|
|
@ -2074,13 +1973,13 @@ FINAL SYMBOL TABLE
|
|
|
|
|
(byte*) main::cursor#3 cursor zp ZP_PTR_BYTE:2 11.0
|
|
|
|
|
(byte*) main::cursor#5 cursor zp ZP_PTR_BYTE:2 16.5
|
|
|
|
|
(byte) main::e
|
|
|
|
|
(byte) main::e#1 reg byte x 11.0
|
|
|
|
|
(byte) main::e#2 reg byte x 22.0
|
|
|
|
|
(byte) main::e#3 reg byte x 5.5
|
|
|
|
|
(byte) main::e#5 reg byte x 16.5
|
|
|
|
|
(byte) main::e#1 e zp ZP_BYTE:4 11.0
|
|
|
|
|
(byte) main::e#2 e zp ZP_BYTE:4 22.0
|
|
|
|
|
(byte) main::e#3 e zp ZP_BYTE:4 5.5
|
|
|
|
|
(byte) main::e#5 e zp ZP_BYTE:4 16.5
|
|
|
|
|
(byte) main::x
|
|
|
|
|
(byte) main::x#1 x zp ZP_BYTE:4 3.666666666666667
|
|
|
|
|
(byte) main::x#2 x zp ZP_BYTE:4 11.0
|
|
|
|
|
(byte) main::x#1 reg byte x 3.666666666666667
|
|
|
|
|
(byte) main::x#2 reg byte x 11.0
|
|
|
|
|
(byte) main::x0
|
|
|
|
|
(byte) main::x1
|
|
|
|
|
(const byte) main::x1#0 x1 = (byte) 39
|
|
|
|
@ -2097,8 +1996,8 @@ FINAL SYMBOL TABLE
|
|
|
|
|
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 4
|
|
|
|
|
|
|
|
|
|
zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
|
|
|
|
zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
|
|
|
|
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
|
|
|
|
reg byte x [ main::x#2 main::x#1 ]
|
|
|
|
|
zp ZP_BYTE:4 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
|
|
|
|
zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ]
|
|
|
|
|
|
|
|
|
|
FINAL CODE
|
|
|
|
@ -2116,17 +2015,18 @@ main: {
|
|
|
|
|
.const y1 = $18
|
|
|
|
|
.const xd = x1-4
|
|
|
|
|
.const yd = y1-4
|
|
|
|
|
.label x = 4
|
|
|
|
|
.label cursor = 2
|
|
|
|
|
.label e = 4
|
|
|
|
|
.label y = 5
|
|
|
|
|
//SEG6 [2] phi from main to main::@1
|
|
|
|
|
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
lda #4
|
|
|
|
|
sta y
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
|
|
|
|
|
ldx #yd/2
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
|
|
|
|
|
sta x
|
|
|
|
|
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
|
|
|
|
|
lda #yd/2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
|
|
|
|
|
ldx #4
|
|
|
|
|
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
|
|
|
|
|
lda #<SCREEN+4*$28+4
|
|
|
|
|
sta cursor
|
|
|
|
@ -2143,21 +2043,22 @@ main: {
|
|
|
|
|
ldy #0
|
|
|
|
|
lda #STAR
|
|
|
|
|
sta (cursor),y
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc x
|
|
|
|
|
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
|
|
|
|
|
inx
|
|
|
|
|
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
|
|
|
|
|
inc cursor
|
|
|
|
|
bne !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
|
|
|
|
|
lda e
|
|
|
|
|
clc
|
|
|
|
|
adc #yd
|
|
|
|
|
tax
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
|
|
|
|
|
cpx #xd
|
|
|
|
|
bcc b2
|
|
|
|
|
sta e
|
|
|
|
|
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
|
|
|
|
|
lda #xd
|
|
|
|
|
cmp e
|
|
|
|
|
bcs b2
|
|
|
|
|
//SEG22 main::@3
|
|
|
|
|
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
|
|
|
|
|
inc y
|
|
|
|
@ -2169,20 +2070,18 @@ main: {
|
|
|
|
|
bcc !+
|
|
|
|
|
inc cursor+1
|
|
|
|
|
!:
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
|
|
|
|
|
txa
|
|
|
|
|
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
|
|
|
|
|
sec
|
|
|
|
|
sbc #xd
|
|
|
|
|
tax
|
|
|
|
|
sta e
|
|
|
|
|
//SEG26 [11] phi from main::@1 main::@3 to main::@2
|
|
|
|
|
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
|
|
|
|
|
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
|
|
|
|
|
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
|
|
|
|
|
//SEG30 main::@2
|
|
|
|
|
b2:
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
|
|
|
|
|
lda x
|
|
|
|
|
cmp #x1+1
|
|
|
|
|
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
|
|
|
|
|
cpx #x1+1
|
|
|
|
|
bcc b1
|
|
|
|
|
//SEG32 main::@return
|
|
|
|
|
//SEG33 [13] return [ ]
|
|
|
|
|