mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-12-24 20:32:39 +00:00
Added inline string test 3 & made minor fix to dtv-blitter-min
This commit is contained in:
parent
3ddc19c5c2
commit
1ae9dbb6cf
@ -45,6 +45,17 @@ public class TestPrograms {
|
|||||||
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
|
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testInlineString3() throws IOException, URISyntaxException {
|
||||||
|
try {
|
||||||
|
compileAndCompare("inline-string-3");
|
||||||
|
} catch(CompileError e) {
|
||||||
|
// ignore & return
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fail("Expected compile error.");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testC64DtvBlitterMin() throws IOException, URISyntaxException {
|
public void testC64DtvBlitterMin() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("c64dtv-blittermin");
|
compileAndCompare("c64dtv-blittermin");
|
||||||
|
@ -9,6 +9,9 @@ void main() {
|
|||||||
|
|
||||||
*DTV_FEATURE = DTV_FEATURE_ENABLE;
|
*DTV_FEATURE = DTV_FEATURE_ENABLE;
|
||||||
|
|
||||||
|
// Instruct blitter not to continue previous blit
|
||||||
|
*DTV_BLITTER_CONTROL2 = DTV_BLIT_CLEAR_IRQ;
|
||||||
|
|
||||||
*DTV_BLITTER_SRCA_LO = <SRCA;
|
*DTV_BLITTER_SRCA_LO = <SRCA;
|
||||||
*DTV_BLITTER_SRCA_MI = >SRCA;
|
*DTV_BLITTER_SRCA_MI = >SRCA;
|
||||||
*DTV_BLITTER_SRCA_HI = 0;
|
*DTV_BLITTER_SRCA_HI = 0;
|
||||||
|
12
src/test/java/dk/camelot64/kickc/test/kc/inline-string-3.kc
Normal file
12
src/test/java/dk/camelot64/kickc/test/kc/inline-string-3.kc
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// Test assigning address of inline string to pointer
|
||||||
|
// The result should be an labelled .text in the ASM
|
||||||
|
// Erroneously tries to inline the string completely leading to a CompileError
|
||||||
|
void main() {
|
||||||
|
const byte[] STRING = "camelot";
|
||||||
|
const byte* PTR = $9ffe;
|
||||||
|
*PTR = <STRING;
|
||||||
|
*(PTR+1)= >STRING;
|
||||||
|
byte* ptr = (byte*) { *(PTR+1), *PTR };
|
||||||
|
const byte* SCREEN = $400;
|
||||||
|
*SCREEN = *ptr;
|
||||||
|
}
|
@ -39,6 +39,7 @@
|
|||||||
.label DTV_BLITTER_ALU = $d33e
|
.label DTV_BLITTER_ALU = $d33e
|
||||||
.const DTV_BLIT_ADD = $30
|
.const DTV_BLIT_ADD = $30
|
||||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||||
|
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||||
.const DTV_BLIT_DEST_CONT = 8
|
.const DTV_BLIT_DEST_CONT = 8
|
||||||
.const DTV_BLIT_STATUS_BUSY = 1
|
.const DTV_BLIT_STATUS_BUSY = 1
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
@ -47,6 +48,8 @@
|
|||||||
main: {
|
main: {
|
||||||
lda #DTV_FEATURE_ENABLE
|
lda #DTV_FEATURE_ENABLE
|
||||||
sta DTV_FEATURE
|
sta DTV_FEATURE
|
||||||
|
lda #DTV_BLIT_CLEAR_IRQ
|
||||||
|
sta DTV_BLITTER_CONTROL2
|
||||||
lda #<SRCA
|
lda #<SRCA
|
||||||
sta DTV_BLITTER_SRCA_LO
|
sta DTV_BLITTER_SRCA_LO
|
||||||
lda #>SRCA
|
lda #>SRCA
|
||||||
|
@ -9,47 +9,48 @@
|
|||||||
[3] phi() [ ] ( )
|
[3] phi() [ ] ( )
|
||||||
main: scope:[main] from @2
|
main: scope:[main] from @2
|
||||||
[4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] )
|
[4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] )
|
||||||
[5] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] )
|
[5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] )
|
||||||
[6] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] )
|
[6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] )
|
||||||
[7] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] )
|
||||||
[8] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[9] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[10] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[11] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[12] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] )
|
[12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[13] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] )
|
[13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] )
|
||||||
[14] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] )
|
[14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] )
|
||||||
[15] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] )
|
||||||
[16] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[17] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[19] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[20] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[21] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
|
[21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[22] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
|
[22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
|
||||||
[23] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
|
||||||
[24] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[25] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[26] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[27] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[28] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] )
|
[28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[29] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] )
|
[29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] )
|
||||||
[30] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] )
|
||||||
[31] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] )
|
[31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[32] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] )
|
[32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] )
|
||||||
[33] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] )
|
[33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] )
|
||||||
[34] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] )
|
[34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] )
|
||||||
|
[35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] )
|
||||||
to:main::@2
|
to:main::@2
|
||||||
main::@2: scope:[main] from main main::@2 main::@3
|
main::@2: scope:[main] from main main::@2 main::@3
|
||||||
[35] (byte) main::r#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::r#1 ) [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
[36] (byte) main::r#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::r#1 ) [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
||||||
[36] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] )
|
[37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] )
|
||||||
[37] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
[38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
||||||
to:main::@3
|
to:main::@3
|
||||||
main::@3: scope:[main] from main::@2
|
main::@3: scope:[main] from main::@2
|
||||||
[38] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
[39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
||||||
[39] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] )
|
[40] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] )
|
||||||
[40] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] )
|
[41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] )
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@3
|
main::@return: scope:[main] from main::@3
|
||||||
[41] return [ ] ( main:2 [ ] )
|
[42] return [ ] ( main:2 [ ] )
|
||||||
to:@return
|
to:@return
|
||||||
|
@ -10,6 +10,9 @@ void main() {
|
|||||||
|
|
||||||
*DTV_FEATURE = DTV_FEATURE_ENABLE;
|
*DTV_FEATURE = DTV_FEATURE_ENABLE;
|
||||||
|
|
||||||
|
// Instruct blitter not to continue previous blit
|
||||||
|
*DTV_BLITTER_CONTROL2 = DTV_BLIT_CLEAR_IRQ;
|
||||||
|
|
||||||
*DTV_BLITTER_SRCA_LO = <SRCA;
|
*DTV_BLITTER_SRCA_LO = <SRCA;
|
||||||
*DTV_BLITTER_SRCA_MI = >SRCA;
|
*DTV_BLITTER_SRCA_MI = >SRCA;
|
||||||
*DTV_BLITTER_SRCA_HI = 0;
|
*DTV_BLITTER_SRCA_HI = 0;
|
||||||
@ -516,6 +519,7 @@ endproc // dtvSetCpuBankSegment1()
|
|||||||
(byte[]) SRCB ← { (byte/word/signed word/dword/signed dword) 128 }
|
(byte[]) SRCB ← { (byte/word/signed word/dword/signed dword) 128 }
|
||||||
proc (void()) main()
|
proc (void()) main()
|
||||||
*((byte*) DTV_FEATURE) ← (byte) DTV_FEATURE_ENABLE
|
*((byte*) DTV_FEATURE) ← (byte) DTV_FEATURE_ENABLE
|
||||||
|
*((byte*) DTV_BLITTER_CONTROL2) ← (byte) DTV_BLIT_CLEAR_IRQ
|
||||||
(byte~) main::$0 ← < (byte[]) SRCA
|
(byte~) main::$0 ← < (byte[]) SRCA
|
||||||
*((byte*) DTV_BLITTER_SRCA_LO) ← (byte~) main::$0
|
*((byte*) DTV_BLITTER_SRCA_LO) ← (byte~) main::$0
|
||||||
(byte~) main::$1 ← > (byte[]) SRCA
|
(byte~) main::$1 ← > (byte[]) SRCA
|
||||||
@ -1042,6 +1046,7 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan
|
|||||||
to:@2
|
to:@2
|
||||||
main: scope:[main] from
|
main: scope:[main] from
|
||||||
*((byte*) DTV_FEATURE) ← (byte) DTV_FEATURE_ENABLE
|
*((byte*) DTV_FEATURE) ← (byte) DTV_FEATURE_ENABLE
|
||||||
|
*((byte*) DTV_BLITTER_CONTROL2) ← (byte) DTV_BLIT_CLEAR_IRQ
|
||||||
(byte~) main::$0 ← < (byte[]) SRCA
|
(byte~) main::$0 ← < (byte[]) SRCA
|
||||||
*((byte*) DTV_BLITTER_SRCA_LO) ← (byte~) main::$0
|
*((byte*) DTV_BLITTER_SRCA_LO) ← (byte~) main::$0
|
||||||
(byte~) main::$1 ← > (byte[]) SRCA
|
(byte~) main::$1 ← > (byte[]) SRCA
|
||||||
@ -1232,7 +1237,6 @@ Eliminating unused variable (byte) DTV_BLIT_OR and assignment [148] (byte) DTV_B
|
|||||||
Eliminating unused variable (byte) DTV_BLIT_XOR and assignment [149] (byte) DTV_BLIT_XOR ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
Eliminating unused variable (byte) DTV_BLIT_XOR and assignment [149] (byte) DTV_BLIT_XOR ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||||
Eliminating unused variable (byte) DTV_BLIT_XNOR and assignment [150] (byte) DTV_BLIT_XNOR ← (byte/signed byte/word/signed word/dword/signed dword) 40
|
Eliminating unused variable (byte) DTV_BLIT_XNOR and assignment [150] (byte) DTV_BLIT_XNOR ← (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||||
Eliminating unused variable (byte) DTV_BLIT_SUB and assignment [152] (byte) DTV_BLIT_SUB ← (byte/signed byte/word/signed word/dword/signed dword) 56
|
Eliminating unused variable (byte) DTV_BLIT_SUB and assignment [152] (byte) DTV_BLIT_SUB ← (byte/signed byte/word/signed word/dword/signed dword) 56
|
||||||
Eliminating unused variable (byte) DTV_BLIT_CLEAR_IRQ and assignment [154] (byte) DTV_BLIT_CLEAR_IRQ ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
||||||
Eliminating unused variable (byte) DTV_BLIT_SRCA_CONT and assignment [155] (byte) DTV_BLIT_SRCA_CONT ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
Eliminating unused variable (byte) DTV_BLIT_SRCA_CONT and assignment [155] (byte) DTV_BLIT_SRCA_CONT ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||||
Eliminating unused variable (byte) DTV_BLIT_SRCB_CONT and assignment [156] (byte) DTV_BLIT_SRCB_CONT ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
Eliminating unused variable (byte) DTV_BLIT_SRCB_CONT and assignment [156] (byte) DTV_BLIT_SRCB_CONT ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||||
Eliminating unused variable (byte) DTV_BLIT_STATUS_IRQ and assignment [159] (byte) DTV_BLIT_STATUS_IRQ ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
Eliminating unused variable (byte) DTV_BLIT_STATUS_IRQ and assignment [159] (byte) DTV_BLIT_STATUS_IRQ ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||||
@ -1285,6 +1289,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
|||||||
(byte*) DTV_BLITTER_ALU#0 ← ((byte*)) (word/dword/signed dword) 54078
|
(byte*) DTV_BLITTER_ALU#0 ← ((byte*)) (word/dword/signed dword) 54078
|
||||||
(byte) DTV_BLIT_ADD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
(byte) DTV_BLIT_ADD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||||
(byte*) DTV_BLITTER_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 54079
|
(byte*) DTV_BLITTER_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 54079
|
||||||
|
(byte) DTV_BLIT_CLEAR_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||||
(byte) DTV_BLIT_DEST_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
(byte) DTV_BLIT_DEST_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||||
(byte) DTV_BLIT_STATUS_BUSY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
(byte) DTV_BLIT_STATUS_BUSY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||||
@ -1295,6 +1300,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
|||||||
main: scope:[main] from @2
|
main: scope:[main] from @2
|
||||||
(byte*) DTV_BLITTER_ALU#1 ← phi( @2/(byte*) DTV_BLITTER_ALU#2 )
|
(byte*) DTV_BLITTER_ALU#1 ← phi( @2/(byte*) DTV_BLITTER_ALU#2 )
|
||||||
*((byte*) DTV_FEATURE#0) ← (byte) DTV_FEATURE_ENABLE#0
|
*((byte*) DTV_FEATURE#0) ← (byte) DTV_FEATURE_ENABLE#0
|
||||||
|
*((byte*) DTV_BLITTER_CONTROL2#0) ← (byte) DTV_BLIT_CLEAR_IRQ#0
|
||||||
(byte~) main::$0 ← < (byte[]) SRCA#0
|
(byte~) main::$0 ← < (byte[]) SRCA#0
|
||||||
*((byte*) DTV_BLITTER_SRCA_LO#0) ← (byte~) main::$0
|
*((byte*) DTV_BLITTER_SRCA_LO#0) ← (byte~) main::$0
|
||||||
(byte~) main::$1 ← > (byte[]) SRCA#0
|
(byte~) main::$1 ← > (byte[]) SRCA#0
|
||||||
@ -1442,6 +1448,8 @@ SYMBOL TABLE SSA
|
|||||||
(byte*) DTV_BLITTER_TRANSPARANCY#0
|
(byte*) DTV_BLITTER_TRANSPARANCY#0
|
||||||
(byte) DTV_BLIT_ADD
|
(byte) DTV_BLIT_ADD
|
||||||
(byte) DTV_BLIT_ADD#0
|
(byte) DTV_BLIT_ADD#0
|
||||||
|
(byte) DTV_BLIT_CLEAR_IRQ
|
||||||
|
(byte) DTV_BLIT_CLEAR_IRQ#0
|
||||||
(byte) DTV_BLIT_DEST_CONT
|
(byte) DTV_BLIT_DEST_CONT
|
||||||
(byte) DTV_BLIT_DEST_CONT#0
|
(byte) DTV_BLIT_DEST_CONT#0
|
||||||
(byte) DTV_BLIT_DEST_FWD
|
(byte) DTV_BLIT_DEST_FWD
|
||||||
@ -1555,6 +1563,7 @@ Constant (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 = 0
|
|||||||
Constant (const byte*) DTV_BLITTER_ALU#0 = ((byte*))54078
|
Constant (const byte*) DTV_BLITTER_ALU#0 = ((byte*))54078
|
||||||
Constant (const byte) DTV_BLIT_ADD#0 = 48
|
Constant (const byte) DTV_BLIT_ADD#0 = 48
|
||||||
Constant (const byte*) DTV_BLITTER_CONTROL2#0 = ((byte*))54079
|
Constant (const byte*) DTV_BLITTER_CONTROL2#0 = ((byte*))54079
|
||||||
|
Constant (const byte) DTV_BLIT_CLEAR_IRQ#0 = 1
|
||||||
Constant (const byte) DTV_BLIT_DEST_CONT#0 = 8
|
Constant (const byte) DTV_BLIT_DEST_CONT#0 = 8
|
||||||
Constant (const byte) DTV_BLIT_STATUS_BUSY#0 = 1
|
Constant (const byte) DTV_BLIT_STATUS_BUSY#0 = 1
|
||||||
Constant (const byte*) SCREEN#0 = ((byte*))1024
|
Constant (const byte*) SCREEN#0 = ((byte*))1024
|
||||||
@ -1625,7 +1634,7 @@ Propagating live ranges...
|
|||||||
Propagating live ranges...
|
Propagating live ranges...
|
||||||
Propagating live ranges...
|
Propagating live ranges...
|
||||||
Created 1 initial phi equivalence classes
|
Created 1 initial phi equivalence classes
|
||||||
Coalesced [42] main::r#5 ← main::r#1
|
Coalesced [43] main::r#5 ← main::r#1
|
||||||
Coalesced down to 1 phi equivalence classes
|
Coalesced down to 1 phi equivalence classes
|
||||||
Culled Empty Block (label) main::@5
|
Culled Empty Block (label) main::@5
|
||||||
Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@return
|
Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@return
|
||||||
@ -1650,49 +1659,50 @@ FINAL CONTROL FLOW GRAPH
|
|||||||
[3] phi() [ ] ( )
|
[3] phi() [ ] ( )
|
||||||
main: scope:[main] from @2
|
main: scope:[main] from @2
|
||||||
[4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] )
|
[4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] )
|
||||||
[5] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] )
|
[5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] )
|
||||||
[6] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] )
|
[6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] )
|
||||||
[7] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] )
|
||||||
[8] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[9] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[10] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[11] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[12] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] )
|
[12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[13] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] )
|
[13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] )
|
||||||
[14] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] )
|
[14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] )
|
||||||
[15] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] )
|
||||||
[16] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[17] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[19] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[20] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[21] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
|
[21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[22] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
|
[22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
|
||||||
[23] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
|
||||||
[24] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[25] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[26] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[27] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
[27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[28] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] )
|
[28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] )
|
||||||
[29] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] )
|
[29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] )
|
||||||
[30] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
[30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] )
|
||||||
[31] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] )
|
[31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
|
||||||
[32] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] )
|
[32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] )
|
||||||
[33] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] )
|
[33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] )
|
||||||
[34] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] )
|
[34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] )
|
||||||
|
[35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] )
|
||||||
to:main::@2
|
to:main::@2
|
||||||
main::@2: scope:[main] from main main::@2 main::@3
|
main::@2: scope:[main] from main main::@2 main::@3
|
||||||
[35] (byte) main::r#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::r#1 ) [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
[36] (byte) main::r#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::r#1 ) [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
||||||
[36] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] )
|
[37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] )
|
||||||
[37] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
[38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
||||||
to:main::@3
|
to:main::@3
|
||||||
main::@3: scope:[main] from main::@2
|
main::@3: scope:[main] from main::@2
|
||||||
[38] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
[39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] )
|
||||||
[39] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] )
|
[40] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] )
|
||||||
[40] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] )
|
[41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] )
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@3
|
main::@return: scope:[main] from main::@3
|
||||||
[41] return [ ] ( main:2 [ ] )
|
[42] return [ ] ( main:2 [ ] )
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
DOMINATORS
|
DOMINATORS
|
||||||
@ -1753,6 +1763,7 @@ VARIABLE REGISTER WEIGHTS
|
|||||||
(byte*) DTV_BLITTER_SRCB_STEP
|
(byte*) DTV_BLITTER_SRCB_STEP
|
||||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||||
(byte) DTV_BLIT_ADD
|
(byte) DTV_BLIT_ADD
|
||||||
|
(byte) DTV_BLIT_CLEAR_IRQ
|
||||||
(byte) DTV_BLIT_DEST_CONT
|
(byte) DTV_BLIT_DEST_CONT
|
||||||
(byte) DTV_BLIT_DEST_FWD
|
(byte) DTV_BLIT_DEST_FWD
|
||||||
(byte) DTV_BLIT_FORCE_START
|
(byte) DTV_BLIT_FORCE_START
|
||||||
@ -1825,6 +1836,7 @@ INITIAL ASM
|
|||||||
.label DTV_BLITTER_ALU = $d33e
|
.label DTV_BLITTER_ALU = $d33e
|
||||||
.const DTV_BLIT_ADD = $30
|
.const DTV_BLIT_ADD = $30
|
||||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||||
|
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||||
.const DTV_BLIT_DEST_CONT = 8
|
.const DTV_BLIT_DEST_CONT = 8
|
||||||
.const DTV_BLIT_STATUS_BUSY = 1
|
.const DTV_BLIT_STATUS_BUSY = 1
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
@ -1850,134 +1862,137 @@ main: {
|
|||||||
//SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_FEATURE_ENABLE
|
lda #DTV_FEATURE_ENABLE
|
||||||
sta DTV_FEATURE
|
sta DTV_FEATURE
|
||||||
//SEG10 [5] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG10 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #DTV_BLIT_CLEAR_IRQ
|
||||||
|
sta DTV_BLITTER_CONTROL2
|
||||||
|
//SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SRCA
|
lda #<SRCA
|
||||||
sta DTV_BLITTER_SRCA_LO
|
sta DTV_BLITTER_SRCA_LO
|
||||||
//SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG12 [7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SRCA
|
lda #>SRCA
|
||||||
sta DTV_BLITTER_SRCA_MI
|
sta DTV_BLITTER_SRCA_MI
|
||||||
//SEG12 [7] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCA_HI
|
sta DTV_BLITTER_SRCA_HI
|
||||||
//SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCA_MOD_LO
|
sta DTV_BLITTER_SRCA_MOD_LO
|
||||||
//SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCA_MOD_HI
|
sta DTV_BLITTER_SRCA_MOD_HI
|
||||||
//SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_SRCA_LIN_LO
|
sta DTV_BLITTER_SRCA_LIN_LO
|
||||||
//SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_SRCA_LIN_HI
|
sta DTV_BLITTER_SRCA_LIN_HI
|
||||||
//SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG18 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #$10
|
lda #$10
|
||||||
sta DTV_BLITTER_SRCA_STEP
|
sta DTV_BLITTER_SRCA_STEP
|
||||||
//SEG18 [13] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SRCB
|
lda #<SRCB
|
||||||
sta DTV_BLITTER_SRCB_LO
|
sta DTV_BLITTER_SRCB_LO
|
||||||
//SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG20 [15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SRCB
|
lda #>SRCB
|
||||||
sta DTV_BLITTER_SRCB_MI
|
sta DTV_BLITTER_SRCB_MI
|
||||||
//SEG20 [15] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_HI
|
sta DTV_BLITTER_SRCB_HI
|
||||||
//SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_MOD_LO
|
sta DTV_BLITTER_SRCB_MOD_LO
|
||||||
//SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_MOD_HI
|
sta DTV_BLITTER_SRCB_MOD_HI
|
||||||
//SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_SRCB_LIN_LO
|
sta DTV_BLITTER_SRCB_LIN_LO
|
||||||
//SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_SRCB_LIN_HI
|
sta DTV_BLITTER_SRCB_LIN_HI
|
||||||
//SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG26 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_STEP
|
sta DTV_BLITTER_SRCB_STEP
|
||||||
//SEG26 [21] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG27 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SCREEN
|
lda #<SCREEN
|
||||||
sta DTV_BLITTER_DEST_LO
|
sta DTV_BLITTER_DEST_LO
|
||||||
//SEG27 [22] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG28 [23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta DTV_BLITTER_DEST_MI
|
sta DTV_BLITTER_DEST_MI
|
||||||
//SEG28 [23] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG29 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_DEST_HI
|
sta DTV_BLITTER_DEST_HI
|
||||||
//SEG29 [24] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_DEST_MOD_LO
|
sta DTV_BLITTER_DEST_MOD_LO
|
||||||
//SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG31 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_DEST_MOD_HI
|
sta DTV_BLITTER_DEST_MOD_HI
|
||||||
//SEG31 [26] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_DEST_LIN_LO
|
sta DTV_BLITTER_DEST_LIN_LO
|
||||||
//SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG33 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_DEST_LIN_HI
|
sta DTV_BLITTER_DEST_LIN_HI
|
||||||
//SEG33 [28] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG34 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #$10
|
lda #$10
|
||||||
sta DTV_BLITTER_DEST_STEP
|
sta DTV_BLITTER_DEST_STEP
|
||||||
//SEG34 [29] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG35 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #SRCA_LEN
|
lda #SRCA_LEN
|
||||||
sta DTV_BLITTER_LEN_LO
|
sta DTV_BLITTER_LEN_LO
|
||||||
//SEG35 [30] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG36 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_LEN_HI
|
sta DTV_BLITTER_LEN_HI
|
||||||
//SEG36 [31] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG37 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_ADD
|
lda #DTV_BLIT_ADD
|
||||||
sta DTV_BLITTER_ALU
|
sta DTV_BLITTER_ALU
|
||||||
//SEG37 [32] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG38 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_TRANSPARANCY_NONE
|
lda #DTV_BLIT_TRANSPARANCY_NONE
|
||||||
sta DTV_BLITTER_TRANSPARANCY
|
sta DTV_BLITTER_TRANSPARANCY
|
||||||
//SEG38 [33] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
||||||
sta DTV_BLITTER_CONTROL
|
sta DTV_BLITTER_CONTROL
|
||||||
//SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG40 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_DEST_CONT
|
lda #DTV_BLIT_DEST_CONT
|
||||||
sta DTV_BLITTER_CONTROL2
|
sta DTV_BLITTER_CONTROL2
|
||||||
//SEG40 [35] phi from main to main::@2 [phi:main->main::@2]
|
//SEG41 [36] phi from main to main::@2 [phi:main->main::@2]
|
||||||
b2_from_main:
|
b2_from_main:
|
||||||
//SEG41 [35] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1
|
//SEG42 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1
|
||||||
lda #0
|
lda #0
|
||||||
sta r
|
sta r
|
||||||
jmp b2
|
jmp b2
|
||||||
//SEG42 [35] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
//SEG43 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
||||||
b2_from_b2:
|
b2_from_b2:
|
||||||
jmp b2
|
jmp b2
|
||||||
//SEG43 [35] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
//SEG44 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
||||||
b2_from_b3:
|
b2_from_b3:
|
||||||
//SEG44 [35] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy
|
//SEG45 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy
|
||||||
jmp b2
|
jmp b2
|
||||||
//SEG45 main::@2
|
//SEG46 main::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG46 [36] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) -- vbuz1=_deref_pbuc1_band_vbuc2
|
//SEG47 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) -- vbuz1=_deref_pbuc1_band_vbuc2
|
||||||
lda DTV_BLITTER_CONTROL2
|
lda DTV_BLITTER_CONTROL2
|
||||||
and #DTV_BLIT_STATUS_BUSY
|
and #DTV_BLIT_STATUS_BUSY
|
||||||
sta _15
|
sta _15
|
||||||
//SEG47 [37] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- vbuz1_neq_0_then_la1
|
//SEG48 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- vbuz1_neq_0_then_la1
|
||||||
lda _15
|
lda _15
|
||||||
bne b2_from_b2
|
bne b2_from_b2
|
||||||
jmp b3
|
jmp b3
|
||||||
//SEG48 main::@3
|
//SEG49 main::@3
|
||||||
b3:
|
b3:
|
||||||
//SEG49 [38] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- _deref_pbuc1=vbuc2
|
//SEG50 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
||||||
sta DTV_BLITTER_CONTROL
|
sta DTV_BLITTER_CONTROL
|
||||||
//SEG50 [39] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuz1=_inc_vbuz1
|
//SEG51 [40] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuz1=_inc_vbuz1
|
||||||
inc r
|
inc r
|
||||||
//SEG51 [40] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuz1_neq_vbuc1_then_la1
|
//SEG52 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuz1_neq_vbuc1_then_la1
|
||||||
lda r
|
lda r
|
||||||
cmp #8
|
cmp #8
|
||||||
bne b2_from_b3
|
bne b2_from_b3
|
||||||
jmp breturn
|
jmp breturn
|
||||||
//SEG52 main::@return
|
//SEG53 main::@return
|
||||||
breturn:
|
breturn:
|
||||||
//SEG53 [41] return [ ] ( main:2 [ ] )
|
//SEG54 [42] return [ ] ( main:2 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
|
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
|
||||||
@ -1985,72 +2000,74 @@ main: {
|
|||||||
|
|
||||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||||
Statement [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [5] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [6] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [7] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [8] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [10] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [12] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [13] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [14] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [15] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [16] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [20] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [21] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [22] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [23] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [24] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [26] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [28] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [29] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [30] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [31] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [32] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [33] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [34] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [36] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) always clobbers reg byte a
|
Statement [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
|
Statement [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::r#2 main::r#1 ]
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::r#2 main::r#1 ]
|
||||||
Statement [38] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) always clobbers reg byte a
|
Statement [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) always clobbers reg byte a
|
||||||
Statement [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [5] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [6] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [7] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [8] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [10] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [12] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [13] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [14] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [15] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [16] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [20] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [21] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [22] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [23] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [24] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [26] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [28] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [29] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [30] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [31] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [32] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [33] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [34] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
Statement [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [36] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) always clobbers reg byte a
|
Statement [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||||
Statement [38] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) always clobbers reg byte a
|
Statement [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) always clobbers reg byte a
|
||||||
|
Statement [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) always clobbers reg byte a
|
||||||
Potential registers zp ZP_BYTE:2 [ main::r#2 main::r#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
|
Potential registers zp ZP_BYTE:2 [ main::r#2 main::r#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
|
||||||
Potential registers zp ZP_BYTE:3 [ main::$15 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp ZP_BYTE:3 [ main::$15 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
||||||
|
|
||||||
@ -2058,8 +2075,8 @@ REGISTER UPLIFT SCOPES
|
|||||||
Uplift Scope [main] 202: zp ZP_BYTE:3 [ main::$15 ] 22: zp ZP_BYTE:2 [ main::r#2 main::r#1 ]
|
Uplift Scope [main] 202: zp ZP_BYTE:3 [ main::$15 ] 22: zp ZP_BYTE:2 [ main::r#2 main::r#1 ]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 2809 combination reg byte a [ main::$15 ] reg byte x [ main::r#2 main::r#1 ]
|
Uplifting [main] best 2815 combination reg byte a [ main::$15 ] reg byte x [ main::r#2 main::r#1 ]
|
||||||
Uplifting [] best 2809 combination
|
Uplifting [] best 2815 combination
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
//SEG0 Basic Upstart
|
//SEG0 Basic Upstart
|
||||||
@ -2105,6 +2122,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||||||
.label DTV_BLITTER_ALU = $d33e
|
.label DTV_BLITTER_ALU = $d33e
|
||||||
.const DTV_BLIT_ADD = $30
|
.const DTV_BLIT_ADD = $30
|
||||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||||
|
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||||
.const DTV_BLIT_DEST_CONT = 8
|
.const DTV_BLIT_DEST_CONT = 8
|
||||||
.const DTV_BLIT_STATUS_BUSY = 1
|
.const DTV_BLIT_STATUS_BUSY = 1
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
@ -2128,131 +2146,134 @@ main: {
|
|||||||
//SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_FEATURE_ENABLE
|
lda #DTV_FEATURE_ENABLE
|
||||||
sta DTV_FEATURE
|
sta DTV_FEATURE
|
||||||
//SEG10 [5] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG10 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #DTV_BLIT_CLEAR_IRQ
|
||||||
|
sta DTV_BLITTER_CONTROL2
|
||||||
|
//SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SRCA
|
lda #<SRCA
|
||||||
sta DTV_BLITTER_SRCA_LO
|
sta DTV_BLITTER_SRCA_LO
|
||||||
//SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG12 [7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SRCA
|
lda #>SRCA
|
||||||
sta DTV_BLITTER_SRCA_MI
|
sta DTV_BLITTER_SRCA_MI
|
||||||
//SEG12 [7] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCA_HI
|
sta DTV_BLITTER_SRCA_HI
|
||||||
//SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCA_MOD_LO
|
sta DTV_BLITTER_SRCA_MOD_LO
|
||||||
//SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCA_MOD_HI
|
sta DTV_BLITTER_SRCA_MOD_HI
|
||||||
//SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_SRCA_LIN_LO
|
sta DTV_BLITTER_SRCA_LIN_LO
|
||||||
//SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_SRCA_LIN_HI
|
sta DTV_BLITTER_SRCA_LIN_HI
|
||||||
//SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG18 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #$10
|
lda #$10
|
||||||
sta DTV_BLITTER_SRCA_STEP
|
sta DTV_BLITTER_SRCA_STEP
|
||||||
//SEG18 [13] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SRCB
|
lda #<SRCB
|
||||||
sta DTV_BLITTER_SRCB_LO
|
sta DTV_BLITTER_SRCB_LO
|
||||||
//SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG20 [15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SRCB
|
lda #>SRCB
|
||||||
sta DTV_BLITTER_SRCB_MI
|
sta DTV_BLITTER_SRCB_MI
|
||||||
//SEG20 [15] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_HI
|
sta DTV_BLITTER_SRCB_HI
|
||||||
//SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_MOD_LO
|
sta DTV_BLITTER_SRCB_MOD_LO
|
||||||
//SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_MOD_HI
|
sta DTV_BLITTER_SRCB_MOD_HI
|
||||||
//SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_SRCB_LIN_LO
|
sta DTV_BLITTER_SRCB_LIN_LO
|
||||||
//SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_SRCB_LIN_HI
|
sta DTV_BLITTER_SRCB_LIN_HI
|
||||||
//SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG26 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_STEP
|
sta DTV_BLITTER_SRCB_STEP
|
||||||
//SEG26 [21] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG27 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SCREEN
|
lda #<SCREEN
|
||||||
sta DTV_BLITTER_DEST_LO
|
sta DTV_BLITTER_DEST_LO
|
||||||
//SEG27 [22] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG28 [23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta DTV_BLITTER_DEST_MI
|
sta DTV_BLITTER_DEST_MI
|
||||||
//SEG28 [23] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG29 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_DEST_HI
|
sta DTV_BLITTER_DEST_HI
|
||||||
//SEG29 [24] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_DEST_MOD_LO
|
sta DTV_BLITTER_DEST_MOD_LO
|
||||||
//SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG31 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_DEST_MOD_HI
|
sta DTV_BLITTER_DEST_MOD_HI
|
||||||
//SEG31 [26] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_DEST_LIN_LO
|
sta DTV_BLITTER_DEST_LIN_LO
|
||||||
//SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG33 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_DEST_LIN_HI
|
sta DTV_BLITTER_DEST_LIN_HI
|
||||||
//SEG33 [28] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG34 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #$10
|
lda #$10
|
||||||
sta DTV_BLITTER_DEST_STEP
|
sta DTV_BLITTER_DEST_STEP
|
||||||
//SEG34 [29] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG35 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #SRCA_LEN
|
lda #SRCA_LEN
|
||||||
sta DTV_BLITTER_LEN_LO
|
sta DTV_BLITTER_LEN_LO
|
||||||
//SEG35 [30] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG36 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_LEN_HI
|
sta DTV_BLITTER_LEN_HI
|
||||||
//SEG36 [31] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG37 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_ADD
|
lda #DTV_BLIT_ADD
|
||||||
sta DTV_BLITTER_ALU
|
sta DTV_BLITTER_ALU
|
||||||
//SEG37 [32] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG38 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_TRANSPARANCY_NONE
|
lda #DTV_BLIT_TRANSPARANCY_NONE
|
||||||
sta DTV_BLITTER_TRANSPARANCY
|
sta DTV_BLITTER_TRANSPARANCY
|
||||||
//SEG38 [33] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
||||||
sta DTV_BLITTER_CONTROL
|
sta DTV_BLITTER_CONTROL
|
||||||
//SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG40 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_DEST_CONT
|
lda #DTV_BLIT_DEST_CONT
|
||||||
sta DTV_BLITTER_CONTROL2
|
sta DTV_BLITTER_CONTROL2
|
||||||
//SEG40 [35] phi from main to main::@2 [phi:main->main::@2]
|
//SEG41 [36] phi from main to main::@2 [phi:main->main::@2]
|
||||||
b2_from_main:
|
b2_from_main:
|
||||||
//SEG41 [35] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuxx=vbuc1
|
//SEG42 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuxx=vbuc1
|
||||||
ldx #0
|
ldx #0
|
||||||
jmp b2
|
jmp b2
|
||||||
//SEG42 [35] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
//SEG43 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
||||||
b2_from_b2:
|
b2_from_b2:
|
||||||
jmp b2
|
jmp b2
|
||||||
//SEG43 [35] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
//SEG44 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
||||||
b2_from_b3:
|
b2_from_b3:
|
||||||
//SEG44 [35] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy
|
//SEG45 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy
|
||||||
jmp b2
|
jmp b2
|
||||||
//SEG45 main::@2
|
//SEG46 main::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG46 [36] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) -- vbuaa=_deref_pbuc1_band_vbuc2
|
//SEG47 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) -- vbuaa=_deref_pbuc1_band_vbuc2
|
||||||
lda DTV_BLITTER_CONTROL2
|
lda DTV_BLITTER_CONTROL2
|
||||||
and #DTV_BLIT_STATUS_BUSY
|
and #DTV_BLIT_STATUS_BUSY
|
||||||
//SEG47 [37] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- vbuaa_neq_0_then_la1
|
//SEG48 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- vbuaa_neq_0_then_la1
|
||||||
cmp #0
|
cmp #0
|
||||||
bne b2_from_b2
|
bne b2_from_b2
|
||||||
jmp b3
|
jmp b3
|
||||||
//SEG48 main::@3
|
//SEG49 main::@3
|
||||||
b3:
|
b3:
|
||||||
//SEG49 [38] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- _deref_pbuc1=vbuc2
|
//SEG50 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
||||||
sta DTV_BLITTER_CONTROL
|
sta DTV_BLITTER_CONTROL
|
||||||
//SEG50 [39] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuxx=_inc_vbuxx
|
//SEG51 [40] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
//SEG51 [40] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuxx_neq_vbuc1_then_la1
|
//SEG52 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuxx_neq_vbuc1_then_la1
|
||||||
cpx #8
|
cpx #8
|
||||||
bne b2_from_b3
|
bne b2_from_b3
|
||||||
jmp breturn
|
jmp breturn
|
||||||
//SEG52 main::@return
|
//SEG53 main::@return
|
||||||
breturn:
|
breturn:
|
||||||
//SEG53 [41] return [ ] ( main:2 [ ] )
|
//SEG54 [42] return [ ] ( main:2 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
|
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
|
||||||
@ -2361,6 +2382,8 @@ FINAL SYMBOL TABLE
|
|||||||
(const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) 54075
|
(const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) 54075
|
||||||
(byte) DTV_BLIT_ADD
|
(byte) DTV_BLIT_ADD
|
||||||
(const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) 48
|
(const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||||
|
(byte) DTV_BLIT_CLEAR_IRQ
|
||||||
|
(const byte) DTV_BLIT_CLEAR_IRQ#0 DTV_BLIT_CLEAR_IRQ = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||||
(byte) DTV_BLIT_DEST_CONT
|
(byte) DTV_BLIT_DEST_CONT
|
||||||
(const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8
|
(const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||||
(byte) DTV_BLIT_DEST_FWD
|
(byte) DTV_BLIT_DEST_FWD
|
||||||
@ -2401,7 +2424,7 @@ reg byte a [ main::$15 ]
|
|||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 1561
|
Score: 1567
|
||||||
|
|
||||||
//SEG0 Basic Upstart
|
//SEG0 Basic Upstart
|
||||||
.pc = $801 "Basic"
|
.pc = $801 "Basic"
|
||||||
@ -2446,6 +2469,7 @@ Score: 1561
|
|||||||
.label DTV_BLITTER_ALU = $d33e
|
.label DTV_BLITTER_ALU = $d33e
|
||||||
.const DTV_BLIT_ADD = $30
|
.const DTV_BLIT_ADD = $30
|
||||||
.label DTV_BLITTER_CONTROL2 = $d33f
|
.label DTV_BLITTER_CONTROL2 = $d33f
|
||||||
|
.const DTV_BLIT_CLEAR_IRQ = 1
|
||||||
.const DTV_BLIT_DEST_CONT = 8
|
.const DTV_BLIT_DEST_CONT = 8
|
||||||
.const DTV_BLIT_STATUS_BUSY = 1
|
.const DTV_BLIT_STATUS_BUSY = 1
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
@ -2462,115 +2486,118 @@ main: {
|
|||||||
//SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_FEATURE_ENABLE
|
lda #DTV_FEATURE_ENABLE
|
||||||
sta DTV_FEATURE
|
sta DTV_FEATURE
|
||||||
//SEG10 [5] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG10 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #DTV_BLIT_CLEAR_IRQ
|
||||||
|
sta DTV_BLITTER_CONTROL2
|
||||||
|
//SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SRCA
|
lda #<SRCA
|
||||||
sta DTV_BLITTER_SRCA_LO
|
sta DTV_BLITTER_SRCA_LO
|
||||||
//SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG12 [7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SRCA
|
lda #>SRCA
|
||||||
sta DTV_BLITTER_SRCA_MI
|
sta DTV_BLITTER_SRCA_MI
|
||||||
//SEG12 [7] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCA_HI
|
sta DTV_BLITTER_SRCA_HI
|
||||||
//SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
sta DTV_BLITTER_SRCA_MOD_LO
|
sta DTV_BLITTER_SRCA_MOD_LO
|
||||||
//SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
sta DTV_BLITTER_SRCA_MOD_HI
|
sta DTV_BLITTER_SRCA_MOD_HI
|
||||||
//SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_SRCA_LIN_LO
|
sta DTV_BLITTER_SRCA_LIN_LO
|
||||||
//SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_SRCA_LIN_HI
|
sta DTV_BLITTER_SRCA_LIN_HI
|
||||||
//SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG18 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #$10
|
lda #$10
|
||||||
sta DTV_BLITTER_SRCA_STEP
|
sta DTV_BLITTER_SRCA_STEP
|
||||||
//SEG18 [13] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SRCB
|
lda #<SRCB
|
||||||
sta DTV_BLITTER_SRCB_LO
|
sta DTV_BLITTER_SRCB_LO
|
||||||
//SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG20 [15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SRCB
|
lda #>SRCB
|
||||||
sta DTV_BLITTER_SRCB_MI
|
sta DTV_BLITTER_SRCB_MI
|
||||||
//SEG20 [15] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_HI
|
sta DTV_BLITTER_SRCB_HI
|
||||||
//SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
sta DTV_BLITTER_SRCB_MOD_LO
|
sta DTV_BLITTER_SRCB_MOD_LO
|
||||||
//SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
sta DTV_BLITTER_SRCB_MOD_HI
|
sta DTV_BLITTER_SRCB_MOD_HI
|
||||||
//SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_SRCB_LIN_LO
|
sta DTV_BLITTER_SRCB_LIN_LO
|
||||||
//SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_SRCB_LIN_HI
|
sta DTV_BLITTER_SRCB_LIN_HI
|
||||||
//SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG26 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_SRCB_STEP
|
sta DTV_BLITTER_SRCB_STEP
|
||||||
//SEG26 [21] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG27 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<SCREEN
|
lda #<SCREEN
|
||||||
sta DTV_BLITTER_DEST_LO
|
sta DTV_BLITTER_DEST_LO
|
||||||
//SEG27 [22] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG28 [23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta DTV_BLITTER_DEST_MI
|
sta DTV_BLITTER_DEST_MI
|
||||||
//SEG28 [23] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG29 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_DEST_HI
|
sta DTV_BLITTER_DEST_HI
|
||||||
//SEG29 [24] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
sta DTV_BLITTER_DEST_MOD_LO
|
sta DTV_BLITTER_DEST_MOD_LO
|
||||||
//SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG31 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
sta DTV_BLITTER_DEST_MOD_HI
|
sta DTV_BLITTER_DEST_MOD_HI
|
||||||
//SEG31 [26] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #<$100
|
lda #<$100
|
||||||
sta DTV_BLITTER_DEST_LIN_LO
|
sta DTV_BLITTER_DEST_LIN_LO
|
||||||
//SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG33 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #>$100
|
lda #>$100
|
||||||
sta DTV_BLITTER_DEST_LIN_HI
|
sta DTV_BLITTER_DEST_LIN_HI
|
||||||
//SEG33 [28] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG34 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #$10
|
lda #$10
|
||||||
sta DTV_BLITTER_DEST_STEP
|
sta DTV_BLITTER_DEST_STEP
|
||||||
//SEG34 [29] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG35 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #SRCA_LEN
|
lda #SRCA_LEN
|
||||||
sta DTV_BLITTER_LEN_LO
|
sta DTV_BLITTER_LEN_LO
|
||||||
//SEG35 [30] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG36 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta DTV_BLITTER_LEN_HI
|
sta DTV_BLITTER_LEN_HI
|
||||||
//SEG36 [31] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG37 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_ADD
|
lda #DTV_BLIT_ADD
|
||||||
sta DTV_BLITTER_ALU
|
sta DTV_BLITTER_ALU
|
||||||
//SEG37 [32] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG38 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_TRANSPARANCY_NONE
|
lda #DTV_BLIT_TRANSPARANCY_NONE
|
||||||
sta DTV_BLITTER_TRANSPARANCY
|
sta DTV_BLITTER_TRANSPARANCY
|
||||||
//SEG38 [33] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
||||||
sta DTV_BLITTER_CONTROL
|
sta DTV_BLITTER_CONTROL
|
||||||
//SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
//SEG40 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_DEST_CONT
|
lda #DTV_BLIT_DEST_CONT
|
||||||
sta DTV_BLITTER_CONTROL2
|
sta DTV_BLITTER_CONTROL2
|
||||||
//SEG40 [35] phi from main to main::@2 [phi:main->main::@2]
|
//SEG41 [36] phi from main to main::@2 [phi:main->main::@2]
|
||||||
//SEG41 [35] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuxx=vbuc1
|
//SEG42 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuxx=vbuc1
|
||||||
ldx #0
|
ldx #0
|
||||||
//SEG42 [35] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
//SEG43 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
||||||
//SEG43 [35] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
//SEG44 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
||||||
//SEG44 [35] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy
|
//SEG45 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy
|
||||||
//SEG45 main::@2
|
//SEG46 main::@2
|
||||||
b2:
|
b2:
|
||||||
//SEG46 [36] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) -- vbuaa=_deref_pbuc1_band_vbuc2
|
//SEG47 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 [ main::r#2 main::$15 ] ( main:2 [ main::r#2 main::$15 ] ) -- vbuaa=_deref_pbuc1_band_vbuc2
|
||||||
lda DTV_BLITTER_CONTROL2
|
lda DTV_BLITTER_CONTROL2
|
||||||
and #DTV_BLIT_STATUS_BUSY
|
and #DTV_BLIT_STATUS_BUSY
|
||||||
//SEG47 [37] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- vbuaa_neq_0_then_la1
|
//SEG48 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- vbuaa_neq_0_then_la1
|
||||||
cmp #0
|
cmp #0
|
||||||
bne b2
|
bne b2
|
||||||
//SEG48 main::@3
|
//SEG49 main::@3
|
||||||
//SEG49 [38] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- _deref_pbuc1=vbuc2
|
//SEG50 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 [ main::r#2 ] ( main:2 [ main::r#2 ] ) -- _deref_pbuc1=vbuc2
|
||||||
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD
|
||||||
sta DTV_BLITTER_CONTROL
|
sta DTV_BLITTER_CONTROL
|
||||||
//SEG50 [39] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuxx=_inc_vbuxx
|
//SEG51 [40] (byte) main::r#1 ← ++ (byte) main::r#2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
//SEG51 [40] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuxx_neq_vbuc1_then_la1
|
//SEG52 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 [ main::r#1 ] ( main:2 [ main::r#1 ] ) -- vbuxx_neq_vbuc1_then_la1
|
||||||
cpx #8
|
cpx #8
|
||||||
bne b2
|
bne b2
|
||||||
//SEG52 main::@return
|
//SEG53 main::@return
|
||||||
//SEG53 [41] return [ ] ( main:2 [ ] )
|
//SEG54 [42] return [ ] ( main:2 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
|
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
|
||||||
|
@ -63,6 +63,8 @@
|
|||||||
(const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) 54075
|
(const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) 54075
|
||||||
(byte) DTV_BLIT_ADD
|
(byte) DTV_BLIT_ADD
|
||||||
(const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) 48
|
(const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||||
|
(byte) DTV_BLIT_CLEAR_IRQ
|
||||||
|
(const byte) DTV_BLIT_CLEAR_IRQ#0 DTV_BLIT_CLEAR_IRQ = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||||
(byte) DTV_BLIT_DEST_CONT
|
(byte) DTV_BLIT_DEST_CONT
|
||||||
(const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8
|
(const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||||
(byte) DTV_BLIT_DEST_FWD
|
(byte) DTV_BLIT_DEST_FWD
|
||||||
|
Loading…
Reference in New Issue
Block a user