diff --git a/src/test/ref/complex/blackhole/blackhole.asm b/src/test/ref/complex/blackhole/blackhole.asm index ca15377fa..ae5b69713 100644 --- a/src/test/ref/complex/blackhole/blackhole.asm +++ b/src/test/ref/complex/blackhole/blackhole.asm @@ -36,53 +36,31 @@ .label SCREEN = $400 // Distance value meaning not found .const NOT_FOUND = $ffff + .const NUM_PROCESSING = $10 .const RASTER_IRQ_TOP = $30 .const RASTER_IRQ_MIDDLE = $ff main: { - .label sc = 2 - .label src = 4 - .label dst = 6 - .label center_dist = $11 - ldx #0 + .label src = 2 + .label dst = 4 + .label center_dist = $f + ldy #0 // Init processing array b1: - txa + tya asl asl - tay + tax lda #0 - sta PROCESSING,y - sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,y + sta PROCESSING,x + sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,x lda #NOT_FOUND - sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y - inx - cpx #8 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,x + iny + cpy #NUM_PROCESSING-1+1 bne b1 jsr setupRasterIrq - lda #SCREEN - sta sc+1 - // Fill screen with some chars - b3: - lda sc - and #$1f - clc - adc #'a' - ldy #0 - sta (sc),y - inc sc - bne !+ - inc sc+1 - !: - lda sc+1 - cmp #>SCREEN+$3e7+1 - bne b3 - lda sc - cmp #SCREEN_COPY @@ -92,7 +70,7 @@ main: { lda #>SCREEN sta src+1 // Copy screen to screen copy - b4: + b3: ldy #0 lda (src),y sta (dst),y @@ -105,39 +83,39 @@ main: { inc dst+1 !: lda src+1 - cmp #>SCREEN+$3e7 - bne b4 + cmp #>SCREEN+$3e8 + bne b3 lda src - cmp #NOT_FOUND - bne b7 + bne b6 lda center_dist cmp #COLS - sta _4+1 + sta _5+1 lda #WHITE ldy processing_x - sta (_4),y + sta (_5),y lda processing_y - sta _6 + sta _7 lda #0 - sta _6+1 - lda _6 + sta _7+1 + lda _7 asl - sta _24 - lda _6+1 - rol - sta _24+1 - asl _24 - rol _24+1 - lda _25 - clc - adc _24 sta _25 - lda _25+1 - adc _24+1 + lda _7+1 + rol sta _25+1 - asl _7 - rol _7+1 - asl _7 - rol _7+1 - asl _7 - rol _7+1 + asl _25 + rol _25+1 + lda _26 clc - lda _8 + adc _25 + sta _26 + lda _26+1 + adc _25+1 + sta _26+1 + asl _8 + rol _8+1 + asl _8 + rol _8+1 + asl _8 + rol _8+1 + clc + lda _9 adc #SCREEN - sta _8+1 - lda (_8),y + sta _9+1 + lda (_9),y cmp #' ' beq b3 - lda (_8),y + lda (_9),y cmp #' ' beq !+ bcs b4 !: ldy processing_x - lda (_8),y + lda (_9),y clc adc #1 - sta (_8),y + sta (_9),y b2: inx - cpx #8 + cpx #NUM_PROCESSING-1+1 beq !b1+ jmp b1 !b1: rts b4: ldy processing_x - lda (_8),y + lda (_9),y sec sbc #1 - sta (_8),y + sta (_9),y jmp b2 b3: txa @@ -682,9 +660,9 @@ irqTop: { } // Copy of the screen used for finding chars to process SCREEN_COPY: .fill $3e8, 0 - // Chars currently being processed in the interrupt - PROCESSING: .fill 4*8, 0 // SQUARES_X[i] = (i-20)*(i-20) SQUARES_X: .fill 2*$28, 0 // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 + // Chars currently being processed in the interrupt + PROCESSING: .fill 4*NUM_PROCESSING, 0 diff --git a/src/test/ref/complex/blackhole/blackhole.cfg b/src/test/ref/complex/blackhole/blackhole.cfg index 6f75d00b9..5a82f6f5f 100644 --- a/src/test/ref/complex/blackhole/blackhole.cfg +++ b/src/test/ref/complex/blackhole/blackhole.cfg @@ -12,348 +12,339 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) - [6] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 - [7] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) main::$18) ← (byte) 0 - [8] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$18) ← (byte) 0 - [9] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$18) ← (const word) NOT_FOUND#0 + [6] (byte~) main::$14 ← (byte) main::i#2 << (byte) 2 + [7] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$14) ← (byte) 0 + [8] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$14) ← (byte) 0 + [9] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$14) ← (const word) NOT_FOUND#0 [10] (byte) main::i#1 ← ++ (byte) main::i#2 - [11] if((byte) main::i#1!=(byte) 8) goto main::@1 + [11] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 [12] phi() [13] call setupRasterIrq to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - [14] (byte*) main::sc#2 ← phi( main::@2/(const byte*) SCREEN#0 main::@3/(byte*) main::sc#1 ) - [15] (byte~) main::$5 ← < (byte*) main::sc#2 - [16] (byte~) main::$6 ← (byte~) main::$5 & (byte) $1f - [17] (byte~) main::$7 ← (byte) 'a' + (byte~) main::$6 - [18] *((byte*) main::sc#2) ← (byte~) main::$7 - [19] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 - [20] if((byte*) main::sc#1!=(const byte*) SCREEN#0+(word) $3e7+(byte) 1) goto main::@3 + [14] (byte*) main::dst#2 ← phi( main::@2/(const byte[$3e8]) SCREEN_COPY#0 main::@3/(byte*) main::dst#1 ) + [14] (byte*) main::src#2 ← phi( main::@2/(const byte*) SCREEN#0 main::@3/(byte*) main::src#1 ) + [15] *((byte*) main::dst#2) ← *((byte*) main::src#2) + [16] (byte*) main::src#1 ← ++ (byte*) main::src#2 + [17] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 + [18] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@3 to:main::@4 -main::@4: scope:[main] from main::@3 main::@4 - [21] (byte*) main::dst#2 ← phi( main::@3/(const byte[$3e8]) SCREEN_COPY#0 main::@4/(byte*) main::dst#1 ) - [21] (byte*) main::src#2 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(byte*) main::src#1 ) - [22] *((byte*) main::dst#2) ← *((byte*) main::src#2) - [23] (byte*) main::src#1 ← ++ (byte*) main::src#2 - [24] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 - [25] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e7) goto main::@4 +main::@4: scope:[main] from main::@3 + [19] phi() + [20] call initSquareTables to:main::@5 -main::@5: scope:[main] from main::@4 - [26] phi() - [27] call initSquareTables - to:main::@6 -main::@6: scope:[main] from main::@5 main::@7 - [28] phi() - [29] call getCenterChar - [30] (byte) getCenterChar::return_x#0 ← (byte) getCenterChar::return_x#1 - [31] (byte) getCenterChar::return_y#0 ← (byte) getCenterChar::return_y#1 - [32] (word) getCenterChar::return_dist#0 ← (word) getCenterChar::return_dist#1 - to:main::@9 -main::@9: scope:[main] from main::@6 - [33] (byte) main::center_x#0 ← (byte) getCenterChar::return_x#0 - [34] (byte) main::center_y#0 ← (byte) getCenterChar::return_y#0 - [35] (word) main::center_dist#0 ← (word) getCenterChar::return_dist#0 - [36] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@7 +main::@5: scope:[main] from main::@4 main::@6 + [21] phi() + [22] call getCharToProcess + [23] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 + [24] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 + [25] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 to:main::@8 -main::@8: scope:[main] from main::@8 main::@9 - [37] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7) - to:main::@8 -main::@7: scope:[main] from main::@9 - [38] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 - [39] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 - [40] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 - [41] call startProcessing - to:main::@6 -startProcessing: scope:[startProcessing] from main::@7 - [42] phi() +main::@8: scope:[main] from main::@5 + [26] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + [27] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + [28] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + [29] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@6 + to:main::@7 +main::@7: scope:[main] from main::@7 main::@8 + [30] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7) + to:main::@7 +main::@6: scope:[main] from main::@8 + [31] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 + [32] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 + [33] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 + [34] call startProcessing + to:main::@5 +startProcessing: scope:[startProcessing] from main::@6 + [35] phi() to:startProcessing::@1 startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@6 - [43] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@6/(byte~) startProcessing::freeIdx#7 ) + [36] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@6/(byte~) startProcessing::freeIdx#7 ) to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 - [44] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) - [45] (byte~) startProcessing::$4 ← (byte) startProcessing::i#2 << (byte) 2 - [46] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$4)!=(const word) NOT_FOUND#0) goto startProcessing::@3 + [37] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) + [38] (byte~) startProcessing::$5 ← (byte) startProcessing::i#2 << (byte) 2 + [39] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5)!=(const word) NOT_FOUND#0) goto startProcessing::@3 to:startProcessing::@4 startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@7 - [47] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@7/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) - [48] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6 + [40] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@7/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) + [41] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6 to:startProcessing::@5 startProcessing::@5: scope:[startProcessing] from startProcessing::@4 - [49] (byte~) startProcessing::$5 ← (byte) startProcessing::freeIdx#2 << (byte) 2 - [50] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_x#0 - [51] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$5) ← (byte) startProcessing::center_y#0 - [52] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5) ← (word) startProcessing::center_dist#0 + [42] (byte~) startProcessing::$6 ← (byte) startProcessing::freeIdx#2 << (byte) 2 + [43] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x#0 + [44] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y#0 + [45] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist#0 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@5 - [53] return + [46] return to:@return startProcessing::@6: scope:[startProcessing] from startProcessing::@4 - [54] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 + [47] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 to:startProcessing::@1 startProcessing::@3: scope:[startProcessing] from startProcessing::@2 - [55] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 - [56] if((byte) startProcessing::i#1!=(byte) 8) goto startProcessing::@2 + [48] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 + [49] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 to:startProcessing::@7 startProcessing::@7: scope:[startProcessing] from startProcessing::@3 - [57] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 + [50] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 to:startProcessing::@4 -getCenterChar: scope:[getCenterChar] from main::@6 - [58] phi() - to:getCenterChar::@1 -getCenterChar::@1: scope:[getCenterChar] from getCenterChar getCenterChar::@9 - [59] (byte) getCenterChar::closest_y#9 ← phi( getCenterChar/(byte) 0 getCenterChar::@9/(byte) getCenterChar::return_y#1 ) - [59] (byte) getCenterChar::closest_x#9 ← phi( getCenterChar/(byte) 0 getCenterChar::@9/(byte) getCenterChar::return_x#1 ) - [59] (word) getCenterChar::closest_dist#8 ← phi( getCenterChar/(const word) NOT_FOUND#0 getCenterChar::@9/(word~) getCenterChar::closest_dist#10 ) - [59] (byte) getCenterChar::y#7 ← phi( getCenterChar/(byte) 0 getCenterChar::@9/(byte) getCenterChar::y#1 ) - [59] (byte*) getCenterChar::screen_line#4 ← phi( getCenterChar/(const byte[$3e8]) SCREEN_COPY#0 getCenterChar::@9/(byte*) getCenterChar::screen_line#1 ) - to:getCenterChar::@2 -getCenterChar::@2: scope:[getCenterChar] from getCenterChar::@1 getCenterChar::@10 - [60] (byte) getCenterChar::closest_y#7 ← phi( getCenterChar::@1/(byte) getCenterChar::closest_y#9 getCenterChar::@10/(byte) getCenterChar::return_y#1 ) - [60] (byte) getCenterChar::closest_x#7 ← phi( getCenterChar::@1/(byte) getCenterChar::closest_x#9 getCenterChar::@10/(byte) getCenterChar::return_x#1 ) - [60] (word) getCenterChar::closest_dist#2 ← phi( getCenterChar::@1/(word) getCenterChar::closest_dist#8 getCenterChar::@10/(word~) getCenterChar::closest_dist#12 ) - [60] (byte) getCenterChar::x#2 ← phi( getCenterChar::@1/(byte) 0 getCenterChar::@10/(byte) getCenterChar::x#1 ) - [61] if(*((byte*) getCenterChar::screen_line#4 + (byte) getCenterChar::x#2)==(byte) ' ') goto getCenterChar::@11 - to:getCenterChar::@4 -getCenterChar::@4: scope:[getCenterChar] from getCenterChar::@2 - [62] (byte~) getCenterChar::$13 ← (byte) getCenterChar::x#2 << (byte) 1 - [63] (byte~) getCenterChar::$14 ← (byte) getCenterChar::y#7 << (byte) 1 - [64] (word) getCenterChar::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCenterChar::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCenterChar::$14) - [65] if((word) getCenterChar::dist#0>=(word) getCenterChar::closest_dist#2) goto getCenterChar::@12 - to:getCenterChar::@5 -getCenterChar::@5: scope:[getCenterChar] from getCenterChar::@4 - [66] (byte~) getCenterChar::return_x#7 ← (byte) getCenterChar::x#2 - [67] (byte~) getCenterChar::return_y#7 ← (byte) getCenterChar::y#7 - to:getCenterChar::@3 -getCenterChar::@3: scope:[getCenterChar] from getCenterChar::@11 getCenterChar::@12 getCenterChar::@5 - [68] (byte) getCenterChar::return_y#1 ← phi( getCenterChar::@11/(byte) getCenterChar::closest_y#7 getCenterChar::@12/(byte) getCenterChar::closest_y#7 getCenterChar::@5/(byte~) getCenterChar::return_y#7 ) - [68] (byte) getCenterChar::return_x#1 ← phi( getCenterChar::@11/(byte) getCenterChar::closest_x#7 getCenterChar::@12/(byte) getCenterChar::closest_x#7 getCenterChar::@5/(byte~) getCenterChar::return_x#7 ) - [68] (word) getCenterChar::return_dist#1 ← phi( getCenterChar::@11/(word~) getCenterChar::return_dist#5 getCenterChar::@12/(word~) getCenterChar::return_dist#6 getCenterChar::@5/(word) getCenterChar::dist#0 ) - [69] (byte) getCenterChar::x#1 ← ++ (byte) getCenterChar::x#2 - [70] if((byte) getCenterChar::x#1!=(byte) $28) goto getCenterChar::@10 - to:getCenterChar::@6 -getCenterChar::@6: scope:[getCenterChar] from getCenterChar::@3 - [71] (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#4 + (byte) $28 - [72] (byte) getCenterChar::y#1 ← ++ (byte) getCenterChar::y#7 - [73] if((byte) getCenterChar::y#1!=(byte) $19) goto getCenterChar::@9 - to:getCenterChar::@7 -getCenterChar::@7: scope:[getCenterChar] from getCenterChar::@6 - [74] if((word) getCenterChar::return_dist#1==(const word) NOT_FOUND#0) goto getCenterChar::@return - to:getCenterChar::@8 -getCenterChar::@8: scope:[getCenterChar] from getCenterChar::@7 - [75] (word~) getCenterChar::$9 ← (word)(byte) getCenterChar::return_y#1 - [76] (word) getCenterChar::$15 ← (word~) getCenterChar::$9 << (byte) 2 - [77] (word) getCenterChar::$16 ← (word) getCenterChar::$15 + (word~) getCenterChar::$9 - [78] (word~) getCenterChar::$10 ← (word) getCenterChar::$16 << (byte) 3 - [79] (byte*~) getCenterChar::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCenterChar::$10 - [80] *((byte*~) getCenterChar::$11 + (byte) getCenterChar::return_x#1) ← (byte) ' ' - to:getCenterChar::@return -getCenterChar::@return: scope:[getCenterChar] from getCenterChar::@7 getCenterChar::@8 - [81] return +getCharToProcess: scope:[getCharToProcess] from main::@5 + [51] phi() + to:getCharToProcess::@1 +getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9 + [52] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) + [52] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) + [52] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 ) + [52] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) + [52] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) + to:getCharToProcess::@2 +getCharToProcess::@2: scope:[getCharToProcess] from getCharToProcess::@1 getCharToProcess::@10 + [53] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) + [53] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) + [53] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 ) + [53] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) + [54] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 + to:getCharToProcess::@4 +getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2 + [55] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 + [56] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 + [57] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + [58] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + to:getCharToProcess::@5 +getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 + [59] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [60] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + to:getCharToProcess::@3 +getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 + [61] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) + [61] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) + [61] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) + [62] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [63] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + to:getCharToProcess::@6 +getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 + [64] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [65] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [66] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + to:getCharToProcess::@7 +getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 + [67] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + to:getCharToProcess::@8 +getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 + [68] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 + [69] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 + [70] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 + [71] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 + [72] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 + [73] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + to:getCharToProcess::@return +getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 + [74] return to:@return -getCenterChar::@9: scope:[getCenterChar] from getCenterChar::@6 - [82] (word~) getCenterChar::closest_dist#10 ← (word) getCenterChar::return_dist#1 - to:getCenterChar::@1 -getCenterChar::@10: scope:[getCenterChar] from getCenterChar::@3 - [83] (word~) getCenterChar::closest_dist#12 ← (word) getCenterChar::return_dist#1 - to:getCenterChar::@2 -getCenterChar::@12: scope:[getCenterChar] from getCenterChar::@4 - [84] (word~) getCenterChar::return_dist#6 ← (word) getCenterChar::closest_dist#2 - to:getCenterChar::@3 -getCenterChar::@11: scope:[getCenterChar] from getCenterChar::@2 - [85] (word~) getCenterChar::return_dist#5 ← (word) getCenterChar::closest_dist#2 - to:getCenterChar::@3 -initSquareTables: scope:[initSquareTables] from main::@5 - [86] phi() +getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 + [75] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + to:getCharToProcess::@1 +getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 + [76] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + to:getCharToProcess::@2 +getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 + [77] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + to:getCharToProcess::@3 +getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 + [78] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + to:getCharToProcess::@3 +initSquareTables: scope:[initSquareTables] from main::@4 + [79] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [87] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [88] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [80] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) + [81] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [89] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [82] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [90] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [91] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [92] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [93] call mul8u - [94] (word) mul8u::return#2 ← (word) mul8u::res#2 + [83] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) + [84] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 + [85] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + [86] call mul8u + [87] (word) mul8u::return#2 ← (word) mul8u::res#2 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [95] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [96] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [97] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [98] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [99] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [88] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + [89] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 + [90] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 + [91] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 + [92] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [100] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [101] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [93] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) + [94] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [102] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [95] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [103] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [104] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [105] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [106] call mul8u - [107] (word) mul8u::return#3 ← (word) mul8u::res#2 + [96] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) + [97] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 + [98] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + [99] call mul8u + [100] (word) mul8u::return#3 ← (word) mul8u::res#2 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [108] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [109] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [110] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [111] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [112] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [101] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + [102] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 + [103] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 + [104] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 + [105] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [113] return + [106] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [114] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [107] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [115] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [108] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [116] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [116] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [109] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) + [109] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [117] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [117] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [117] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [118] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [110] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [110] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [110] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [111] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [119] return + [112] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [120] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [121] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [113] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [114] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [115] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [123] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [124] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [116] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [117] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [118] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 setupRasterIrq: scope:[setupRasterIrq] from main::@2 asm { sei } - [127] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [128] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [129] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [120] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [121] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [122] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [130] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [123] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [131] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [132] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [133] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [124] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 + [125] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [126] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [135] return + [128] return to:@return irqBottom: scope:[irqBottom] from - [136] phi() + [129] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - [137] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) - [138] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 - [139] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 + [130] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) + [131] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 + [132] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [140] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [141] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 - [142] call processChars + [133] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 + [134] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [135] call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - [143] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [144] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [145] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [146] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [147] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [136] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [137] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + [138] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 + [139] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() + [140] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@3 - [148] return + [141] return to:@return processChars: scope:[processChars] from irqBottom::@2 - [149] phi() + [142] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [150] (byte) processChars::i#2 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [151] (byte~) processChars::$13 ← (byte) processChars::i#2 << (byte) 2 - [152] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$13)==(const word) NOT_FOUND#0) goto processChars::@2 + [143] (byte) processChars::i#2 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) + [144] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 + [145] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$14)==(const word) NOT_FOUND#0) goto processChars::@2 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@1 - [153] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 - [154] (byte) processChars::processing_x#0 ← *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) processChars::$14) - [155] (byte) processChars::processing_y#0 ← *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) processChars::$14) - [156] (word~) processChars::$2 ← (word)(byte) processChars::processing_y#0 - [157] (word) processChars::$21 ← (word~) processChars::$2 << (byte) 2 - [158] (word) processChars::$22 ← (word) processChars::$21 + (word~) processChars::$2 - [159] (word~) processChars::$3 ← (word) processChars::$22 << (byte) 3 - [160] (byte*~) processChars::$4 ← (const byte*) COLS#0 + (word~) processChars::$3 - [161] *((byte*~) processChars::$4 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 - [162] (word~) processChars::$6 ← (word)(byte) processChars::processing_y#0 - [163] (word) processChars::$24 ← (word~) processChars::$6 << (byte) 2 - [164] (word) processChars::$25 ← (word) processChars::$24 + (word~) processChars::$6 - [165] (word~) processChars::$7 ← (word) processChars::$25 << (byte) 3 - [166] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (word~) processChars::$7 - [167] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 + [146] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 + [147] (byte) processChars::processing_x#0 ← *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$15) + [148] (byte) processChars::processing_y#0 ← *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) processChars::$15) + [149] (word~) processChars::$3 ← (word)(byte) processChars::processing_y#0 + [150] (word) processChars::$22 ← (word~) processChars::$3 << (byte) 2 + [151] (word) processChars::$23 ← (word) processChars::$22 + (word~) processChars::$3 + [152] (word~) processChars::$4 ← (word) processChars::$23 << (byte) 3 + [153] (byte*~) processChars::$5 ← (const byte*) COLS#0 + (word~) processChars::$4 + [154] *((byte*~) processChars::$5 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 + [155] (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0 + [156] (word) processChars::$25 ← (word~) processChars::$7 << (byte) 2 + [157] (word) processChars::$26 ← (word) processChars::$25 + (word~) processChars::$7 + [158] (word~) processChars::$8 ← (word) processChars::$26 << (byte) 3 + [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (word~) processChars::$8 + [160] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 to:processChars::@6 processChars::@6: scope:[processChars] from processChars::@5 - [168] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 + [161] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 to:processChars::@7 processChars::@7: scope:[processChars] from processChars::@6 - [169] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) + [162] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@3 processChars::@4 processChars::@7 - [170] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 - [171] if((byte) processChars::i#1!=(byte) 8) goto processChars::@1 + [163] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 + [164] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 to:processChars::@return processChars::@return: scope:[processChars] from processChars::@2 - [172] return + [165] return to:@return processChars::@4: scope:[processChars] from processChars::@6 - [173] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) + [166] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) to:processChars::@2 processChars::@3: scope:[processChars] from processChars::@5 - [174] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 - [175] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$15) ← (const word) NOT_FOUND#0 + [167] (byte~) processChars::$16 ← (byte) processChars::i#2 << (byte) 2 + [168] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$16) ← (const word) NOT_FOUND#0 to:processChars::@2 irqTop: scope:[irqTop] from - [176] phi() + [169] phi() to:irqTop::@1 irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [177] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [178] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [179] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 + [170] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) + [171] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 + [172] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 to:irqTop::@2 irqTop::@2: scope:[irqTop] from irqTop::@1 - [180] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [181] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [173] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 + [174] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 to:irqTop::@3 irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 - [182] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) - [183] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [184] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 + [175] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) + [176] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 + [177] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 to:irqTop::@4 irqTop::@4: scope:[irqTop] from irqTop::@3 - [185] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [186] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [187] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [188] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [189] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [178] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [179] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + [180] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [181] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [182] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return irqTop::@return: scope:[irqTop] from irqTop::@4 - [190] return + [183] return to:@return diff --git a/src/test/ref/complex/blackhole/blackhole.log b/src/test/ref/complex/blackhole/blackhole.log index c8c258d41..e31129873 100644 --- a/src/test/ref/complex/blackhole/blackhole.log +++ b/src/test/ref/complex/blackhole/blackhole.log @@ -1,26 +1,27 @@ -Resolved forward reference PROCESSING to (struct ProcessingChar[8]) PROCESSING +Resolved forward reference NUM_PROCESSING to (byte) NUM_PROCESSING +Resolved forward reference PROCESSING to (struct ProcessingChar[NUM_PROCESSING]) PROCESSING Resolved forward reference irqTop to interrupt(HARDWARE_ALL)(void()) irqTop() Resolved forward reference RASTER_IRQ_TOP to (byte) RASTER_IRQ_TOP Resolved forward reference RASTER_IRQ_MIDDLE to (byte) RASTER_IRQ_MIDDLE Resolved forward reference irqBottom to interrupt(HARDWARE_ALL)(void()) irqBottom() -Fixing pointer array-indexing *((struct ProcessingChar[8]) PROCESSING + (byte) main::i) -Fixing pointer array-indexing *((struct ProcessingChar[8]) PROCESSING + (byte) startProcessing::i) -Fixing pointer array-indexing *((struct ProcessingChar[8]) PROCESSING + (byte) startProcessing::freeIdx) -Fixing pointer array-indexing *((struct ProcessingChar[8]) PROCESSING + (byte) processChars::i) -Fixing pointer array-indexing *((struct ProcessingChar[8]) PROCESSING + (byte) processChars::i) -Fixing pointer array-indexing *((struct ProcessingChar[8]) PROCESSING + (byte) processChars::i) +Fixing pointer array-indexing *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte) main::i) +Fixing pointer array-indexing *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte) startProcessing::i) +Fixing pointer array-indexing *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte) startProcessing::freeIdx) +Fixing pointer array-indexing *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte) processChars::i) +Fixing pointer array-indexing *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte) processChars::i) +Fixing pointer array-indexing *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte) processChars::i) Fixing pointer array-indexing *((word[$28]) SQUARES_X + (byte) initSquareTables::x) Fixing pointer array-indexing *((word[$19]) SQUARES_Y + (byte) initSquareTables::y) -Fixing pointer array-indexing *((word[$28]) SQUARES_X + (byte) getCenterChar::x) -Fixing pointer array-indexing *((word[$19]) SQUARES_Y + (byte) getCenterChar::y) +Fixing pointer array-indexing *((word[$28]) SQUARES_X + (byte) getCharToProcess::x) +Fixing pointer array-indexing *((word[$19]) SQUARES_Y + (byte) getCharToProcess::y) Created struct value member variable (byte) main::center_x Created struct value member variable (byte) main::center_y Created struct value member variable (word) main::center_dist Converted struct value to member variables (struct ProcessingChar) main::center -Created struct value member variable (byte) main::$11_x -Created struct value member variable (byte) main::$11_y -Created struct value member variable (word) main::$11_dist -Converted struct value to member variables (struct ProcessingChar~) main::$11 +Created struct value member variable (byte) main::$7_x +Created struct value member variable (byte) main::$7_y +Created struct value member variable (word) main::$7_dist +Converted struct value to member variables (struct ProcessingChar~) main::$7 Created struct value member variable (byte) startProcessing::center_x Created struct value member variable (byte) startProcessing::center_y Created struct value member variable (word) startProcessing::center_dist @@ -29,54 +30,54 @@ Created struct value member variable (byte) processChars::processing_x Created struct value member variable (byte) processChars::processing_y Created struct value member variable (word) processChars::processing_dist Converted struct value to member variables (struct ProcessingChar) processChars::processing -Created struct value member variable (byte) getCenterChar::return_x -Created struct value member variable (byte) getCenterChar::return_y -Created struct value member variable (word) getCenterChar::return_dist -Converted struct value to member variables (struct ProcessingChar) getCenterChar::return -Created struct value member variable (byte) getCenterChar::closest_x -Created struct value member variable (byte) getCenterChar::closest_y -Created struct value member variable (word) getCenterChar::closest_dist -Converted struct value to member variables (struct ProcessingChar) getCenterChar::closest +Created struct value member variable (byte) getCharToProcess::return_x +Created struct value member variable (byte) getCharToProcess::return_y +Created struct value member variable (word) getCharToProcess::return_dist +Converted struct value to member variables (struct ProcessingChar) getCharToProcess::return +Created struct value member variable (byte) getCharToProcess::closest_x +Created struct value member variable (byte) getCharToProcess::closest_y +Created struct value member variable (word) getCharToProcess::closest_dist +Converted struct value to member variables (struct ProcessingChar) getCharToProcess::closest Converted procedure struct value parameter to member variables (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) -Adding struct value list initializer *((byte*) main::$19 + (byte~) main::$18) ← (number) 0 -Adding struct value list initializer *((byte*) main::$20 + (byte~) main::$18) ← (number) 0 -Adding struct value list initializer *((word*) main::$21 + (byte~) main::$18) ← (word) NOT_FOUND -Converted procedure call LValue to member variables { (byte) main::$11_x, (byte) main::$11_y, (word) main::$11_dist } ← call getCenterChar -Adding struct value member variable copy (byte) main::center_x ← (byte) main::$11_x -Adding struct value member variable copy (byte) main::center_y ← (byte) main::$11_y -Adding struct value member variable copy (word) main::center_dist ← (word) main::$11_dist -Converted procedure struct value parameter to member variables in call (void~) main::$14 ← call startProcessing (byte) main::center_x (byte) main::center_y (word) main::center_dist -Adding struct value member variable copy *((byte*) startProcessing::$6 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_x -Adding struct value member variable copy *((byte*) startProcessing::$7 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_y -Adding struct value member variable copy *((word*) startProcessing::$8 + (byte~) startProcessing::$5) ← (word) startProcessing::center_dist -Adding struct value member variable copy (byte) processChars::processing_x ← *((byte*) processChars::$16 + (byte~) processChars::$14) -Adding struct value member variable copy (byte) processChars::processing_y ← *((byte*) processChars::$17 + (byte~) processChars::$14) -Adding struct value member variable copy (word) processChars::processing_dist ← *((word*) processChars::$18 + (byte~) processChars::$14) -Adding struct value list initializer (byte) getCenterChar::closest_x ← (number) 0 -Adding struct value list initializer (byte) getCenterChar::closest_y ← (number) 0 -Adding struct value list initializer (word) getCenterChar::closest_dist ← (word) NOT_FOUND -Adding struct value list initializer (byte) getCenterChar::closest_x ← (byte) getCenterChar::x -Adding struct value list initializer (byte) getCenterChar::closest_y ← (byte) getCenterChar::y -Adding struct value list initializer (word) getCenterChar::closest_dist ← (word) getCenterChar::dist -Adding struct value member variable copy (byte) getCenterChar::return_x ← (byte) getCenterChar::closest_x -Adding struct value member variable copy (byte) getCenterChar::return_y ← (byte) getCenterChar::closest_y -Adding struct value member variable copy (word) getCenterChar::return_dist ← (word) getCenterChar::closest_dist -Adding struct value member variable copy (byte) getCenterChar::return_x ← (byte) getCenterChar::return_x -Adding struct value member variable copy (byte) getCenterChar::return_y ← (byte) getCenterChar::return_y -Adding struct value member variable copy (word) getCenterChar::return_dist ← (word) getCenterChar::return_dist -Converted procedure struct return value to member variables return { (byte) getCenterChar::return_x, (byte) getCenterChar::return_y, (word) getCenterChar::return_dist } +Adding struct value list initializer *((byte*) main::$15 + (byte~) main::$14) ← (number) 0 +Adding struct value list initializer *((byte*) main::$16 + (byte~) main::$14) ← (number) 0 +Adding struct value list initializer *((word*) main::$17 + (byte~) main::$14) ← (word) NOT_FOUND +Converted procedure call LValue to member variables { (byte) main::$7_x, (byte) main::$7_y, (word) main::$7_dist } ← call getCharToProcess +Adding struct value member variable copy (byte) main::center_x ← (byte) main::$7_x +Adding struct value member variable copy (byte) main::center_y ← (byte) main::$7_y +Adding struct value member variable copy (word) main::center_dist ← (word) main::$7_dist +Converted procedure struct value parameter to member variables in call (void~) main::$10 ← call startProcessing (byte) main::center_x (byte) main::center_y (word) main::center_dist +Adding struct value member variable copy *((byte*) startProcessing::$7 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x +Adding struct value member variable copy *((byte*) startProcessing::$8 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y +Adding struct value member variable copy *((word*) startProcessing::$9 + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist +Adding struct value member variable copy (byte) processChars::processing_x ← *((byte*) processChars::$17 + (byte~) processChars::$15) +Adding struct value member variable copy (byte) processChars::processing_y ← *((byte*) processChars::$18 + (byte~) processChars::$15) +Adding struct value member variable copy (word) processChars::processing_dist ← *((word*) processChars::$19 + (byte~) processChars::$15) +Adding struct value list initializer (byte) getCharToProcess::closest_x ← (number) 0 +Adding struct value list initializer (byte) getCharToProcess::closest_y ← (number) 0 +Adding struct value list initializer (word) getCharToProcess::closest_dist ← (word) NOT_FOUND +Adding struct value list initializer (byte) getCharToProcess::closest_x ← (byte) getCharToProcess::x +Adding struct value list initializer (byte) getCharToProcess::closest_y ← (byte) getCharToProcess::y +Adding struct value list initializer (word) getCharToProcess::closest_dist ← (word) getCharToProcess::dist +Adding struct value member variable copy (byte) getCharToProcess::return_x ← (byte) getCharToProcess::closest_x +Adding struct value member variable copy (byte) getCharToProcess::return_y ← (byte) getCharToProcess::closest_y +Adding struct value member variable copy (word) getCharToProcess::return_dist ← (word) getCharToProcess::closest_dist +Adding struct value member variable copy (byte) getCharToProcess::return_x ← (byte) getCharToProcess::return_x +Adding struct value member variable copy (byte) getCharToProcess::return_y ← (byte) getCharToProcess::return_y +Adding struct value member variable copy (word) getCharToProcess::return_dist ← (word) getCharToProcess::return_dist +Converted procedure struct return value to member variables return { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (word) getCharToProcess::return_dist } Replacing struct member reference (struct ProcessingChar) main::center.dist with member variable reference (word) main::center_dist Replacing struct member reference (struct ProcessingChar) processChars::processing.y with member variable reference (byte) processChars::processing_y Replacing struct member reference (struct ProcessingChar) processChars::processing.x with member variable reference (byte) processChars::processing_x Replacing struct member reference (struct ProcessingChar) processChars::processing.y with member variable reference (byte) processChars::processing_y Replacing struct member reference (struct ProcessingChar) processChars::processing.x with member variable reference (byte) processChars::processing_x -Replacing struct member reference (struct ProcessingChar) getCenterChar::closest.dist with member variable reference (word) getCenterChar::closest_dist -Replacing struct member reference (struct ProcessingChar) getCenterChar::closest.dist with member variable reference (word) getCenterChar::closest_dist -Replacing struct member reference (struct ProcessingChar) getCenterChar::closest.y with member variable reference (byte) getCenterChar::closest_y -Replacing struct member reference (struct ProcessingChar) getCenterChar::closest.x with member variable reference (byte) getCenterChar::closest_x -Rewriting struct pointer member access *((struct ProcessingChar[8]) PROCESSING + (byte~) startProcessing::$4).dist -Rewriting struct pointer member access *((struct ProcessingChar[8]) PROCESSING + (byte~) processChars::$13).dist -Rewriting struct pointer member access *((struct ProcessingChar[8]) PROCESSING + (byte~) processChars::$15).dist +Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (word) getCharToProcess::closest_dist +Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (word) getCharToProcess::closest_dist +Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.y with member variable reference (byte) getCharToProcess::closest_y +Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.x with member variable reference (byte) getCharToProcess::closest_x +Rewriting struct pointer member access *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte~) startProcessing::$5).dist +Rewriting struct pointer member access *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte~) processChars::$14).dist +Rewriting struct pointer member access *((struct ProcessingChar[NUM_PROCESSING]) PROCESSING + (byte~) processChars::$16).dist Adding pointer type conversion cast (byte*) PROCPORT_DDR in (byte*) PROCPORT_DDR ← (number) 0 Adding pointer type conversion cast (byte*) PROCPORT in (byte*) PROCPORT ← (number) 1 Adding pointer type conversion cast (byte*) CHARGEN in (byte*) CHARGEN ← (number) $d000 @@ -135,11 +136,11 @@ Culled Empty Block (label) @5 Culled Empty Block (label) @6 Culled Empty Block (label) @7 Culled Empty Block (label) @8 -Culled Empty Block (label) main::@10 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@7 Culled Empty Block (label) main::@9 -Culled Empty Block (label) main::@11 +Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@12 -Culled Empty Block (label) main::@14 Culled Empty Block (label) startProcessing::@6 Culled Empty Block (label) startProcessing::@7 Culled Empty Block (label) @11 @@ -154,12 +155,12 @@ Culled Empty Block (label) initSquareTables::@12 Culled Empty Block (label) initSquareTables::@13 Culled Empty Block (label) initSquareTables::@14 Culled Empty Block (label) @13 -Culled Empty Block (label) getCenterChar::@6 -Culled Empty Block (label) getCenterChar::@2 +Culled Empty Block (label) getCharToProcess::@6 +Culled Empty Block (label) getCharToProcess::@2 Culled Empty Block (label) @14 Culled Empty Block (label) setupRasterIrq::@4 -Unwinding list assignment { (byte) main::$11_x, (byte) main::$11_y, (word) main::$11_dist } ← { (byte) getCenterChar::return_x, (byte) getCenterChar::return_y, (word) getCenterChar::return_dist } -Unwinding list assignment { (byte) getCenterChar::return_x#0, (byte) getCenterChar::return_y#0, (word) getCenterChar::return_dist#0 } ← { (byte) getCenterChar::return_x#2, (byte) getCenterChar::return_y#2, (word) getCenterChar::return_dist#2 } +Unwinding list assignment { (byte) main::$7_x, (byte) main::$7_y, (word) main::$7_dist } ← { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (word) getCharToProcess::return_dist } +Unwinding list assignment { (byte) getCharToProcess::return_x#0, (byte) getCharToProcess::return_y#0, (word) getCharToProcess::return_dist#0 } ← { (byte) getCharToProcess::return_x#2, (byte) getCharToProcess::return_y#2, (word) getCharToProcess::return_dist#2 } CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -235,107 +236,95 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 (word) NOT_FOUND#0 ← (number) $ffff to:@10 main: scope:[main] from @17 + (number~) main::$3 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$18 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR - (byte*) main::$19 ← (byte*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X - *((byte*) main::$19 + (byte~) main::$18) ← (number) 0 - (byte*) main::$20 ← (byte*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y - *((byte*) main::$20 + (byte~) main::$18) ← (number) 0 - (word*) main::$21 ← (word*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST - *((word*) main::$21 + (byte~) main::$18) ← (word) NOT_FOUND#0 - (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,7) - (bool~) main::$3 ← (byte) main::i#1 != rangelast(0,7) - if((bool~) main::$3) goto main::@1 + (byte~) main::$14 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR + (byte*) main::$15 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X + *((byte*) main::$15 + (byte~) main::$14) ← (number) 0 + (byte*) main::$16 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + *((byte*) main::$16 + (byte~) main::$14) ← (number) 0 + (word*) main::$17 ← (word*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + *((word*) main::$17 + (byte~) main::$14) ← (word) NOT_FOUND#0 + (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,main::$3) + (bool~) main::$4 ← (byte) main::i#1 != rangelast(0,main::$3) + if((bool~) main::$4) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 (void()*~) main::$0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster#0 ← (byte) RASTER_IRQ_TOP#0 (void()*) setupRasterIrq::irqRoutine#0 ← (void()*~) main::$0 call setupRasterIrq - to:main::@15 -main::@15: scope:[main] from main::@2 - (byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e7 - (byte*) main::sc#0 ← (byte*) SCREEN#0 - to:main::@3 -main::@3: scope:[main] from main::@15 main::@3 - (byte*) main::sc#2 ← phi( main::@15/(byte*) main::sc#0 main::@3/(byte*) main::sc#1 ) - (byte~) main::$5 ← < (byte*) main::sc#2 - (number~) main::$6 ← (byte~) main::$5 & (number) $1f - (number~) main::$7 ← (byte) 'a' + (number~) main::$6 - *((byte*) main::sc#2) ← (number~) main::$7 - (byte*) main::sc#1 ← (byte*) main::sc#2 + rangenext(SCREEN#0,main::$4) - (bool~) main::$8 ← (byte*) main::sc#1 != rangelast(SCREEN#0,main::$4) - if((bool~) main::$8) goto main::@3 - to:main::@4 -main::@4: scope:[main] from main::@3 + to:main::@13 +main::@13: scope:[main] from main::@2 (byte*) main::src#0 ← (byte*) SCREEN#0 (byte*) main::dst#0 ← (byte[$3e8]) SCREEN_COPY#0 - to:main::@5 -main::@5: scope:[main] from main::@4 main::@5 - (byte*) main::dst#2 ← phi( main::@4/(byte*) main::dst#0 main::@5/(byte*) main::dst#1 ) - (byte*) main::src#2 ← phi( main::@4/(byte*) main::src#0 main::@5/(byte*) main::src#1 ) + to:main::@3 +main::@3: scope:[main] from main::@13 main::@3 + (byte*) main::dst#2 ← phi( main::@13/(byte*) main::dst#0 main::@3/(byte*) main::dst#1 ) + (byte*) main::src#2 ← phi( main::@13/(byte*) main::src#0 main::@3/(byte*) main::src#1 ) *((byte*) main::dst#2) ← *((byte*) main::src#2) (byte*) main::src#1 ← ++ (byte*) main::src#2 (byte*) main::dst#1 ← ++ (byte*) main::dst#2 - (byte*~) main::$9 ← (byte*) SCREEN#0 + (number) $3e7 - (bool~) main::$10 ← (byte*) main::src#1 != (byte*~) main::$9 - if((bool~) main::$10) goto main::@5 - to:main::@6 -main::@6: scope:[main] from main::@5 + (byte*~) main::$5 ← (byte*) SCREEN#0 + (number) $3e8 + (bool~) main::$6 ← (byte*) main::src#1 != (byte*~) main::$5 + if((bool~) main::$6) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 call initSquareTables - to:main::@16 -main::@16: scope:[main] from main::@6 - to:main::@7 -main::@7: scope:[main] from main::@16 main::@18 - call getCenterChar - (byte) getCenterChar::return_x#0 ← (byte) getCenterChar::return_x#2 - (byte) getCenterChar::return_y#0 ← (byte) getCenterChar::return_y#2 - (word) getCenterChar::return_dist#0 ← (word) getCenterChar::return_dist#2 - to:main::@17 -main::@17: scope:[main] from main::@7 - (word) getCenterChar::return_dist#3 ← phi( main::@7/(word) getCenterChar::return_dist#0 ) - (byte) getCenterChar::return_y#3 ← phi( main::@7/(byte) getCenterChar::return_y#0 ) - (byte) getCenterChar::return_x#3 ← phi( main::@7/(byte) getCenterChar::return_x#0 ) - (byte) main::$11_x ← (byte) getCenterChar::return_x#3 - (byte) main::$11_y ← (byte) getCenterChar::return_y#3 - (word) main::$11_dist ← (word) getCenterChar::return_dist#3 - (byte) main::center_x#0 ← (byte) main::$11_x - (byte) main::center_y#0 ← (byte) main::$11_y - (word) main::center_dist#0 ← (word) main::$11_dist - (bool~) main::$12 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 - (bool~) main::$13 ← ! (bool~) main::$12 - if((bool~) main::$13) goto main::@8 - to:main::@13 -main::@8: scope:[main] from main::@17 - (word) main::center_dist#1 ← phi( main::@17/(word) main::center_dist#0 ) - (byte) main::center_y#1 ← phi( main::@17/(byte) main::center_y#0 ) - (byte) main::center_x#1 ← phi( main::@17/(byte) main::center_x#0 ) + to:main::@14 +main::@14: scope:[main] from main::@4 + to:main::@5 +main::@5: scope:[main] from main::@14 main::@16 + call getCharToProcess + (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#2 + (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#2 + (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#2 + to:main::@15 +main::@15: scope:[main] from main::@5 + (word) getCharToProcess::return_dist#3 ← phi( main::@5/(word) getCharToProcess::return_dist#0 ) + (byte) getCharToProcess::return_y#3 ← phi( main::@5/(byte) getCharToProcess::return_y#0 ) + (byte) getCharToProcess::return_x#3 ← phi( main::@5/(byte) getCharToProcess::return_x#0 ) + (byte) main::$7_x ← (byte) getCharToProcess::return_x#3 + (byte) main::$7_y ← (byte) getCharToProcess::return_y#3 + (word) main::$7_dist ← (word) getCharToProcess::return_dist#3 + (byte) main::center_x#0 ← (byte) main::$7_x + (byte) main::center_y#0 ← (byte) main::$7_y + (word) main::center_dist#0 ← (word) main::$7_dist + (bool~) main::$8 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 + (bool~) main::$9 ← ! (bool~) main::$8 + if((bool~) main::$9) goto main::@6 + to:main::@11 +main::@6: scope:[main] from main::@15 + (word) main::center_dist#1 ← phi( main::@15/(word) main::center_dist#0 ) + (byte) main::center_y#1 ← phi( main::@15/(byte) main::center_y#0 ) + (byte) main::center_x#1 ← phi( main::@15/(byte) main::center_x#0 ) (byte) startProcessing::center_x#0 ← (byte) main::center_x#1 (byte) startProcessing::center_y#0 ← (byte) main::center_y#1 (word) startProcessing::center_dist#0 ← (word) main::center_dist#1 call startProcessing - to:main::@18 -main::@18: scope:[main] from main::@8 - if(true) goto main::@7 - to:main::@13 -main::@13: scope:[main] from main::@13 main::@17 main::@18 - (byte*~) main::$17 ← (byte*) SCREEN#0 + (number) $3e7 - *((byte*~) main::$17) ← ++ *((byte*~) main::$17) - if(true) goto main::@13 + to:main::@16 +main::@16: scope:[main] from main::@6 + if(true) goto main::@5 + to:main::@11 +main::@11: scope:[main] from main::@11 main::@15 main::@16 + (byte*~) main::$13 ← (byte*) SCREEN#0 + (number) $3e7 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + if(true) goto main::@11 to:main::@return -main::@return: scope:[main] from main::@13 +main::@return: scope:[main] from main::@11 return to:@return @10: scope:[] from @9 - (struct ProcessingChar[8]) PROCESSING#0 ← { fill( 8, 0) } + (byte) NUM_PROCESSING#0 ← (number) $10 + (struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) } to:@12 -startProcessing: scope:[startProcessing] from main::@8 - (word) startProcessing::center_dist#7 ← phi( main::@8/(word) startProcessing::center_dist#0 ) - (byte) startProcessing::center_y#7 ← phi( main::@8/(byte) startProcessing::center_y#0 ) - (byte) startProcessing::center_x#7 ← phi( main::@8/(byte) startProcessing::center_x#0 ) +startProcessing: scope:[startProcessing] from main::@6 + (word) startProcessing::center_dist#7 ← phi( main::@6/(word) startProcessing::center_dist#0 ) + (byte) startProcessing::center_y#7 ← phi( main::@6/(byte) startProcessing::center_y#0 ) + (byte) startProcessing::center_x#7 ← phi( main::@6/(byte) startProcessing::center_x#0 ) (byte) startProcessing::freeIdx#0 ← (number) $ff to:startProcessing::@1 startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@4 @@ -343,6 +332,7 @@ startProcessing::@1: scope:[startProcessing] from startProcessing startProcessi (byte) startProcessing::center_y#6 ← phi( startProcessing/(byte) startProcessing::center_y#7 startProcessing::@4/(byte) startProcessing::center_y#2 ) (byte) startProcessing::center_x#6 ← phi( startProcessing/(byte) startProcessing::center_x#7 startProcessing::@4/(byte) startProcessing::center_x#2 ) (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) startProcessing::freeIdx#0 startProcessing::@4/(byte) startProcessing::freeIdx#2 ) + (number~) startProcessing::$0 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) startProcessing::i#0 ← (byte) 0 to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 @@ -351,11 +341,11 @@ startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProc (byte) startProcessing::center_x#5 ← phi( startProcessing::@1/(byte) startProcessing::center_x#6 startProcessing::@3/(byte) startProcessing::center_x#3 ) (byte) startProcessing::freeIdx#5 ← phi( startProcessing::@1/(byte) startProcessing::freeIdx#6 startProcessing::@3/(byte) startProcessing::freeIdx#4 ) (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) startProcessing::i#0 startProcessing::@3/(byte) startProcessing::i#1 ) - (byte~) startProcessing::$4 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR - (word*) startProcessing::$9 ← (word*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST - (bool~) startProcessing::$0 ← *((word*) startProcessing::$9 + (byte~) startProcessing::$4) == (word) NOT_FOUND#0 - (bool~) startProcessing::$1 ← ! (bool~) startProcessing::$0 - if((bool~) startProcessing::$1) goto startProcessing::@3 + (byte~) startProcessing::$5 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR + (word*) startProcessing::$10 ← (word*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (bool~) startProcessing::$1 ← *((word*) startProcessing::$10 + (byte~) startProcessing::$5) == (word) NOT_FOUND#0 + (bool~) startProcessing::$2 ← ! (bool~) startProcessing::$1 + if((bool~) startProcessing::$2) goto startProcessing::@3 to:startProcessing::@5 startProcessing::@3: scope:[startProcessing] from startProcessing::@2 (word) startProcessing::center_dist#3 ← phi( startProcessing::@2/(word) startProcessing::center_dist#5 ) @@ -363,9 +353,9 @@ startProcessing::@3: scope:[startProcessing] from startProcessing::@2 (byte) startProcessing::center_x#3 ← phi( startProcessing::@2/(byte) startProcessing::center_x#5 ) (byte) startProcessing::freeIdx#4 ← phi( startProcessing::@2/(byte) startProcessing::freeIdx#5 ) (byte) startProcessing::i#3 ← phi( startProcessing::@2/(byte) startProcessing::i#2 ) - (byte) startProcessing::i#1 ← (byte) startProcessing::i#3 + rangenext(0,7) - (bool~) startProcessing::$2 ← (byte) startProcessing::i#1 != rangelast(0,7) - if((bool~) startProcessing::$2) goto startProcessing::@2 + (byte) startProcessing::i#1 ← (byte) startProcessing::i#3 + rangenext(0,startProcessing::$0) + (bool~) startProcessing::$3 ← (byte) startProcessing::i#1 != rangelast(0,startProcessing::$0) + if((bool~) startProcessing::$3) goto startProcessing::@2 to:startProcessing::@4 startProcessing::@5: scope:[startProcessing] from startProcessing::@2 (word) startProcessing::center_dist#4 ← phi( startProcessing::@2/(word) startProcessing::center_dist#5 ) @@ -379,73 +369,74 @@ startProcessing::@4: scope:[startProcessing] from startProcessing::@3 startProc (byte) startProcessing::center_y#2 ← phi( startProcessing::@3/(byte) startProcessing::center_y#3 startProcessing::@5/(byte) startProcessing::center_y#4 ) (byte) startProcessing::center_x#2 ← phi( startProcessing::@3/(byte) startProcessing::center_x#3 startProcessing::@5/(byte) startProcessing::center_x#4 ) (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@3/(byte) startProcessing::freeIdx#4 startProcessing::@5/(byte) startProcessing::freeIdx#1 ) - (bool~) startProcessing::$3 ← (byte) startProcessing::freeIdx#2 == (number) $ff - if((bool~) startProcessing::$3) goto startProcessing::@1 + (bool~) startProcessing::$4 ← (byte) startProcessing::freeIdx#2 == (number) $ff + if((bool~) startProcessing::$4) goto startProcessing::@1 to:startProcessing::@8 startProcessing::@8: scope:[startProcessing] from startProcessing::@4 (word) startProcessing::center_dist#1 ← phi( startProcessing::@4/(word) startProcessing::center_dist#2 ) (byte) startProcessing::center_y#1 ← phi( startProcessing::@4/(byte) startProcessing::center_y#2 ) (byte) startProcessing::center_x#1 ← phi( startProcessing::@4/(byte) startProcessing::center_x#2 ) (byte) startProcessing::freeIdx#3 ← phi( startProcessing::@4/(byte) startProcessing::freeIdx#2 ) - (byte~) startProcessing::$5 ← (byte) startProcessing::freeIdx#3 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR - (byte*) startProcessing::$6 ← (byte*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X - *((byte*) startProcessing::$6 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_x#1 - (byte*) startProcessing::$7 ← (byte*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y - *((byte*) startProcessing::$7 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_y#1 - (word*) startProcessing::$8 ← (word*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST - *((word*) startProcessing::$8 + (byte~) startProcessing::$5) ← (word) startProcessing::center_dist#1 + (byte~) startProcessing::$6 ← (byte) startProcessing::freeIdx#3 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR + (byte*) startProcessing::$7 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X + *((byte*) startProcessing::$7 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x#1 + (byte*) startProcessing::$8 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + *((byte*) startProcessing::$8 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y#1 + (word*) startProcessing::$9 ← (word*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + *((word*) startProcessing::$9 + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist#1 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@8 return to:@return processChars: scope:[processChars] from irqBottom::@2 + (number~) processChars::$0 ← (byte) NUM_PROCESSING#0 - (number) 1 (byte) processChars::i#0 ← (byte) 0 to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 (byte) processChars::i#2 ← phi( processChars/(byte) processChars::i#0 processChars::@2/(byte) processChars::i#1 ) - (byte~) processChars::$13 ← (byte) processChars::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR - (word*) processChars::$19 ← (word*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST - (bool~) processChars::$0 ← *((word*) processChars::$19 + (byte~) processChars::$13) != (word) NOT_FOUND#0 - (bool~) processChars::$1 ← ! (bool~) processChars::$0 - if((bool~) processChars::$1) goto processChars::@2 + (byte~) processChars::$14 ← (byte) processChars::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR + (word*) processChars::$20 ← (word*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (bool~) processChars::$1 ← *((word*) processChars::$20 + (byte~) processChars::$14) != (word) NOT_FOUND#0 + (bool~) processChars::$2 ← ! (bool~) processChars::$1 + if((bool~) processChars::$2) goto processChars::@2 to:processChars::@8 processChars::@2: scope:[processChars] from processChars::@1 processChars::@10 processChars::@3 processChars::@4 (byte) processChars::i#3 ← phi( processChars::@1/(byte) processChars::i#2 processChars::@10/(byte) processChars::i#6 processChars::@3/(byte) processChars::i#5 processChars::@4/(byte) processChars::i#7 ) - (byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,7) - (bool~) processChars::$12 ← (byte) processChars::i#1 != rangelast(0,7) - if((bool~) processChars::$12) goto processChars::@1 + (byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,processChars::$0) + (bool~) processChars::$13 ← (byte) processChars::i#1 != rangelast(0,processChars::$0) + if((bool~) processChars::$13) goto processChars::@1 to:processChars::@return processChars::@8: scope:[processChars] from processChars::@1 (byte) processChars::i#4 ← phi( processChars::@1/(byte) processChars::i#2 ) - (byte~) processChars::$14 ← (byte) processChars::i#4 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR - (byte*) processChars::$16 ← (byte*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X - (byte) processChars::processing_x#0 ← *((byte*) processChars::$16 + (byte~) processChars::$14) - (byte*) processChars::$17 ← (byte*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y - (byte) processChars::processing_y#0 ← *((byte*) processChars::$17 + (byte~) processChars::$14) - (word~) processChars::$2 ← ((word)) (byte) processChars::processing_y#0 - (number~) processChars::$3 ← (word~) processChars::$2 * (number) $28 - (byte*~) processChars::$4 ← (byte*) COLS#0 + (number~) processChars::$3 - (byte*~) processChars::$5 ← (byte*~) processChars::$4 + (byte) processChars::processing_x#0 - *((byte*~) processChars::$5) ← (byte) WHITE#0 - (word~) processChars::$6 ← ((word)) (byte) processChars::processing_y#0 - (number~) processChars::$7 ← (word~) processChars::$6 * (number) $28 - (byte*~) processChars::$8 ← (byte*) SCREEN#0 + (number~) processChars::$7 - (byte*~) processChars::$9 ← (byte*~) processChars::$8 + (byte) processChars::processing_x#0 - (byte*) processChars::processing_ptr#0 ← (byte*~) processChars::$9 - (bool~) processChars::$10 ← *((byte*) processChars::processing_ptr#0) == (byte) ' ' - if((bool~) processChars::$10) goto processChars::@3 + (byte~) processChars::$15 ← (byte) processChars::i#4 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR + (byte*) processChars::$17 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X + (byte) processChars::processing_x#0 ← *((byte*) processChars::$17 + (byte~) processChars::$15) + (byte*) processChars::$18 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte) processChars::processing_y#0 ← *((byte*) processChars::$18 + (byte~) processChars::$15) + (word~) processChars::$3 ← ((word)) (byte) processChars::processing_y#0 + (number~) processChars::$4 ← (word~) processChars::$3 * (number) $28 + (byte*~) processChars::$5 ← (byte*) COLS#0 + (number~) processChars::$4 + (byte*~) processChars::$6 ← (byte*~) processChars::$5 + (byte) processChars::processing_x#0 + *((byte*~) processChars::$6) ← (byte) WHITE#0 + (word~) processChars::$7 ← ((word)) (byte) processChars::processing_y#0 + (number~) processChars::$8 ← (word~) processChars::$7 * (number) $28 + (byte*~) processChars::$9 ← (byte*) SCREEN#0 + (number~) processChars::$8 + (byte*~) processChars::$10 ← (byte*~) processChars::$9 + (byte) processChars::processing_x#0 + (byte*) processChars::processing_ptr#0 ← (byte*~) processChars::$10 + (bool~) processChars::$11 ← *((byte*) processChars::processing_ptr#0) == (byte) ' ' + if((bool~) processChars::$11) goto processChars::@3 to:processChars::@9 processChars::@3: scope:[processChars] from processChars::@8 (byte) processChars::i#5 ← phi( processChars::@8/(byte) processChars::i#4 ) - (byte~) processChars::$15 ← (byte) processChars::i#5 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR - (word*) processChars::$20 ← (word*)(struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST - *((word*) processChars::$20 + (byte~) processChars::$15) ← (word) NOT_FOUND#0 + (byte~) processChars::$16 ← (byte) processChars::i#5 * (const byte) SIZEOF_STRUCT_PROCESSINGCHAR + (word*) processChars::$21 ← (word*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + *((word*) processChars::$21 + (byte~) processChars::$16) ← (word) NOT_FOUND#0 to:processChars::@2 processChars::@9: scope:[processChars] from processChars::@8 (byte) processChars::i#8 ← phi( processChars::@8/(byte) processChars::i#4 ) (byte*) processChars::processing_ptr#1 ← phi( processChars::@8/(byte*) processChars::processing_ptr#0 ) - (bool~) processChars::$11 ← *((byte*) processChars::processing_ptr#1) > (byte) ' ' - if((bool~) processChars::$11) goto processChars::@4 + (bool~) processChars::$12 ← *((byte*) processChars::processing_ptr#1) > (byte) ' ' + if((bool~) processChars::$12) goto processChars::@4 to:processChars::@10 processChars::@4: scope:[processChars] from processChars::@9 (byte) processChars::i#7 ← phi( processChars::@9/(byte) processChars::i#8 ) @@ -464,7 +455,7 @@ processChars::@return: scope:[processChars] from processChars::@2 (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } to:@15 -initSquareTables: scope:[initSquareTables] from main::@6 +initSquareTables: scope:[initSquareTables] from main::@4 (byte) initSquareTables::x#0 ← (byte) 0 to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@15 @@ -541,111 +532,111 @@ initSquareTables::@16: scope:[initSquareTables] from initSquareTables::@11 initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@16 return to:@return -getCenterChar: scope:[getCenterChar] from main::@7 - (byte) getCenterChar::closest_x#0 ← (number) 0 - (byte) getCenterChar::closest_y#0 ← (number) 0 - (word) getCenterChar::closest_dist#0 ← (word) NOT_FOUND#0 - (byte*) getCenterChar::screen_line#0 ← (byte[$3e8]) SCREEN_COPY#0 - (byte) getCenterChar::y#0 ← (byte) 0 - to:getCenterChar::@3 -getCenterChar::@3: scope:[getCenterChar] from getCenterChar getCenterChar::@9 - (byte) getCenterChar::closest_y#9 ← phi( getCenterChar/(byte) getCenterChar::closest_y#0 getCenterChar::@9/(byte) getCenterChar::closest_y#5 ) - (byte) getCenterChar::closest_x#9 ← phi( getCenterChar/(byte) getCenterChar::closest_x#0 getCenterChar::@9/(byte) getCenterChar::closest_x#5 ) - (word) getCenterChar::closest_dist#8 ← phi( getCenterChar/(word) getCenterChar::closest_dist#0 getCenterChar::@9/(word) getCenterChar::closest_dist#6 ) - (byte) getCenterChar::y#7 ← phi( getCenterChar/(byte) getCenterChar::y#0 getCenterChar::@9/(byte) getCenterChar::y#1 ) - (byte*) getCenterChar::screen_line#4 ← phi( getCenterChar/(byte*) getCenterChar::screen_line#0 getCenterChar::@9/(byte*) getCenterChar::screen_line#1 ) - (byte) getCenterChar::x#0 ← (byte) 0 - to:getCenterChar::@4 -getCenterChar::@4: scope:[getCenterChar] from getCenterChar::@3 getCenterChar::@5 - (byte) getCenterChar::closest_y#7 ← phi( getCenterChar::@3/(byte) getCenterChar::closest_y#9 getCenterChar::@5/(byte) getCenterChar::closest_y#6 ) - (byte) getCenterChar::closest_x#7 ← phi( getCenterChar::@3/(byte) getCenterChar::closest_x#9 getCenterChar::@5/(byte) getCenterChar::closest_x#6 ) - (word) getCenterChar::closest_dist#5 ← phi( getCenterChar::@3/(word) getCenterChar::closest_dist#8 getCenterChar::@5/(word) getCenterChar::closest_dist#9 ) - (byte) getCenterChar::y#5 ← phi( getCenterChar::@3/(byte) getCenterChar::y#7 getCenterChar::@5/(byte) getCenterChar::y#6 ) - (byte) getCenterChar::x#2 ← phi( getCenterChar::@3/(byte) getCenterChar::x#0 getCenterChar::@5/(byte) getCenterChar::x#1 ) - (byte*) getCenterChar::screen_line#2 ← phi( getCenterChar::@3/(byte*) getCenterChar::screen_line#4 getCenterChar::@5/(byte*) getCenterChar::screen_line#5 ) - (bool~) getCenterChar::$2 ← *((byte*) getCenterChar::screen_line#2 + (byte) getCenterChar::x#2) != (byte) ' ' - (bool~) getCenterChar::$3 ← ! (bool~) getCenterChar::$2 - if((bool~) getCenterChar::$3) goto getCenterChar::@5 - to:getCenterChar::@7 -getCenterChar::@5: scope:[getCenterChar] from getCenterChar::@4 getCenterChar::@7 getCenterChar::@8 - (byte) getCenterChar::closest_y#6 ← phi( getCenterChar::@4/(byte) getCenterChar::closest_y#7 getCenterChar::@7/(byte) getCenterChar::closest_y#8 getCenterChar::@8/(byte) getCenterChar::closest_y#1 ) - (byte) getCenterChar::closest_x#6 ← phi( getCenterChar::@4/(byte) getCenterChar::closest_x#7 getCenterChar::@7/(byte) getCenterChar::closest_x#8 getCenterChar::@8/(byte) getCenterChar::closest_x#1 ) - (word) getCenterChar::closest_dist#9 ← phi( getCenterChar::@4/(word) getCenterChar::closest_dist#5 getCenterChar::@7/(word) getCenterChar::closest_dist#2 getCenterChar::@8/(word) getCenterChar::closest_dist#1 ) - (byte) getCenterChar::y#6 ← phi( getCenterChar::@4/(byte) getCenterChar::y#5 getCenterChar::@7/(byte) getCenterChar::y#2 getCenterChar::@8/(byte) getCenterChar::y#3 ) - (byte*) getCenterChar::screen_line#5 ← phi( getCenterChar::@4/(byte*) getCenterChar::screen_line#2 getCenterChar::@7/(byte*) getCenterChar::screen_line#6 getCenterChar::@8/(byte*) getCenterChar::screen_line#7 ) - (byte) getCenterChar::x#3 ← phi( getCenterChar::@4/(byte) getCenterChar::x#2 getCenterChar::@7/(byte) getCenterChar::x#4 getCenterChar::@8/(byte) getCenterChar::x#5 ) - (byte) getCenterChar::x#1 ← (byte) getCenterChar::x#3 + rangenext(0,$27) - (bool~) getCenterChar::$7 ← (byte) getCenterChar::x#1 != rangelast(0,$27) - if((bool~) getCenterChar::$7) goto getCenterChar::@4 - to:getCenterChar::@9 -getCenterChar::@7: scope:[getCenterChar] from getCenterChar::@4 - (byte) getCenterChar::closest_y#8 ← phi( getCenterChar::@4/(byte) getCenterChar::closest_y#7 ) - (byte) getCenterChar::closest_x#8 ← phi( getCenterChar::@4/(byte) getCenterChar::closest_x#7 ) - (byte*) getCenterChar::screen_line#6 ← phi( getCenterChar::@4/(byte*) getCenterChar::screen_line#2 ) - (word) getCenterChar::closest_dist#2 ← phi( getCenterChar::@4/(word) getCenterChar::closest_dist#5 ) - (byte) getCenterChar::y#2 ← phi( getCenterChar::@4/(byte) getCenterChar::y#5 ) - (byte) getCenterChar::x#4 ← phi( getCenterChar::@4/(byte) getCenterChar::x#2 ) - (byte~) getCenterChar::$13 ← (byte) getCenterChar::x#4 * (const byte) SIZEOF_WORD - (byte~) getCenterChar::$14 ← (byte) getCenterChar::y#2 * (const byte) SIZEOF_WORD - (word~) getCenterChar::$4 ← *((word[$28]) SQUARES_X#0 + (byte~) getCenterChar::$13) + *((word[$19]) SQUARES_Y#0 + (byte~) getCenterChar::$14) - (word) getCenterChar::dist#0 ← (word~) getCenterChar::$4 - (bool~) getCenterChar::$5 ← (word) getCenterChar::dist#0 < (word) getCenterChar::closest_dist#2 - (bool~) getCenterChar::$6 ← ! (bool~) getCenterChar::$5 - if((bool~) getCenterChar::$6) goto getCenterChar::@5 - to:getCenterChar::@8 -getCenterChar::@8: scope:[getCenterChar] from getCenterChar::@7 - (byte*) getCenterChar::screen_line#7 ← phi( getCenterChar::@7/(byte*) getCenterChar::screen_line#6 ) - (word) getCenterChar::dist#1 ← phi( getCenterChar::@7/(word) getCenterChar::dist#0 ) - (byte) getCenterChar::y#3 ← phi( getCenterChar::@7/(byte) getCenterChar::y#2 ) - (byte) getCenterChar::x#5 ← phi( getCenterChar::@7/(byte) getCenterChar::x#4 ) - (byte) getCenterChar::closest_x#1 ← (byte) getCenterChar::x#5 - (byte) getCenterChar::closest_y#1 ← (byte) getCenterChar::y#3 - (word) getCenterChar::closest_dist#1 ← (word) getCenterChar::dist#1 - to:getCenterChar::@5 -getCenterChar::@9: scope:[getCenterChar] from getCenterChar::@5 - (byte) getCenterChar::closest_y#5 ← phi( getCenterChar::@5/(byte) getCenterChar::closest_y#6 ) - (byte) getCenterChar::closest_x#5 ← phi( getCenterChar::@5/(byte) getCenterChar::closest_x#6 ) - (word) getCenterChar::closest_dist#6 ← phi( getCenterChar::@5/(word) getCenterChar::closest_dist#9 ) - (byte) getCenterChar::y#4 ← phi( getCenterChar::@5/(byte) getCenterChar::y#6 ) - (byte*) getCenterChar::screen_line#3 ← phi( getCenterChar::@5/(byte*) getCenterChar::screen_line#5 ) - (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#3 + (number) $28 - (byte) getCenterChar::y#1 ← (byte) getCenterChar::y#4 + rangenext(0,$18) - (bool~) getCenterChar::$8 ← (byte) getCenterChar::y#1 != rangelast(0,$18) - if((bool~) getCenterChar::$8) goto getCenterChar::@3 - to:getCenterChar::@10 -getCenterChar::@10: scope:[getCenterChar] from getCenterChar::@9 - (byte) getCenterChar::closest_y#4 ← phi( getCenterChar::@9/(byte) getCenterChar::closest_y#5 ) - (byte) getCenterChar::closest_x#4 ← phi( getCenterChar::@9/(byte) getCenterChar::closest_x#5 ) - (word) getCenterChar::closest_dist#3 ← phi( getCenterChar::@9/(word) getCenterChar::closest_dist#6 ) - (bool~) getCenterChar::$0 ← (word) getCenterChar::closest_dist#3 != (word) NOT_FOUND#0 - (bool~) getCenterChar::$1 ← ! (bool~) getCenterChar::$0 - if((bool~) getCenterChar::$1) goto getCenterChar::@1 - to:getCenterChar::@11 -getCenterChar::@1: scope:[getCenterChar] from getCenterChar::@10 getCenterChar::@11 - (word) getCenterChar::closest_dist#4 ← phi( getCenterChar::@10/(word) getCenterChar::closest_dist#3 getCenterChar::@11/(word) getCenterChar::closest_dist#7 ) - (byte) getCenterChar::closest_y#2 ← phi( getCenterChar::@10/(byte) getCenterChar::closest_y#4 getCenterChar::@11/(byte) getCenterChar::closest_y#3 ) - (byte) getCenterChar::closest_x#2 ← phi( getCenterChar::@10/(byte) getCenterChar::closest_x#4 getCenterChar::@11/(byte) getCenterChar::closest_x#3 ) - (byte) getCenterChar::return_x#1 ← (byte) getCenterChar::closest_x#2 - (byte) getCenterChar::return_y#1 ← (byte) getCenterChar::closest_y#2 - (word) getCenterChar::return_dist#1 ← (word) getCenterChar::closest_dist#4 - to:getCenterChar::@return -getCenterChar::@11: scope:[getCenterChar] from getCenterChar::@10 - (word) getCenterChar::closest_dist#7 ← phi( getCenterChar::@10/(word) getCenterChar::closest_dist#3 ) - (byte) getCenterChar::closest_x#3 ← phi( getCenterChar::@10/(byte) getCenterChar::closest_x#4 ) - (byte) getCenterChar::closest_y#3 ← phi( getCenterChar::@10/(byte) getCenterChar::closest_y#4 ) - (word~) getCenterChar::$9 ← ((word)) (byte) getCenterChar::closest_y#3 - (number~) getCenterChar::$10 ← (word~) getCenterChar::$9 * (number) $28 - (byte*~) getCenterChar::$11 ← (byte[$3e8]) SCREEN_COPY#0 + (number~) getCenterChar::$10 - (byte*~) getCenterChar::$12 ← (byte*~) getCenterChar::$11 + (byte) getCenterChar::closest_x#3 - *((byte*~) getCenterChar::$12) ← (byte) ' ' - to:getCenterChar::@1 -getCenterChar::@return: scope:[getCenterChar] from getCenterChar::@1 - (word) getCenterChar::return_dist#4 ← phi( getCenterChar::@1/(word) getCenterChar::return_dist#1 ) - (byte) getCenterChar::return_y#4 ← phi( getCenterChar::@1/(byte) getCenterChar::return_y#1 ) - (byte) getCenterChar::return_x#4 ← phi( getCenterChar::@1/(byte) getCenterChar::return_x#1 ) - (byte) getCenterChar::return_x#2 ← (byte) getCenterChar::return_x#4 - (byte) getCenterChar::return_y#2 ← (byte) getCenterChar::return_y#4 - (word) getCenterChar::return_dist#2 ← (word) getCenterChar::return_dist#4 +getCharToProcess: scope:[getCharToProcess] from main::@5 + (byte) getCharToProcess::closest_x#0 ← (number) 0 + (byte) getCharToProcess::closest_y#0 ← (number) 0 + (word) getCharToProcess::closest_dist#0 ← (word) NOT_FOUND#0 + (byte*) getCharToProcess::screen_line#0 ← (byte[$3e8]) SCREEN_COPY#0 + (byte) getCharToProcess::y#0 ← (byte) 0 + to:getCharToProcess::@3 +getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9 + (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) getCharToProcess::closest_y#0 getCharToProcess::@9/(byte) getCharToProcess::closest_y#5 ) + (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) getCharToProcess::closest_x#0 getCharToProcess::@9/(byte) getCharToProcess::closest_x#5 ) + (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(word) getCharToProcess::closest_dist#0 getCharToProcess::@9/(word) getCharToProcess::closest_dist#6 ) + (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) getCharToProcess::y#0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) + (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(byte*) getCharToProcess::screen_line#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) + (byte) getCharToProcess::x#0 ← (byte) 0 + to:getCharToProcess::@4 +getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@3 getCharToProcess::@5 + (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@3/(byte) getCharToProcess::closest_y#9 getCharToProcess::@5/(byte) getCharToProcess::closest_y#6 ) + (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@3/(byte) getCharToProcess::closest_x#9 getCharToProcess::@5/(byte) getCharToProcess::closest_x#6 ) + (word) getCharToProcess::closest_dist#5 ← phi( getCharToProcess::@3/(word) getCharToProcess::closest_dist#8 getCharToProcess::@5/(word) getCharToProcess::closest_dist#9 ) + (byte) getCharToProcess::y#5 ← phi( getCharToProcess::@3/(byte) getCharToProcess::y#7 getCharToProcess::@5/(byte) getCharToProcess::y#6 ) + (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@3/(byte) getCharToProcess::x#0 getCharToProcess::@5/(byte) getCharToProcess::x#1 ) + (byte*) getCharToProcess::screen_line#2 ← phi( getCharToProcess::@3/(byte*) getCharToProcess::screen_line#4 getCharToProcess::@5/(byte*) getCharToProcess::screen_line#5 ) + (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' + (bool~) getCharToProcess::$3 ← ! (bool~) getCharToProcess::$2 + if((bool~) getCharToProcess::$3) goto getCharToProcess::@5 + to:getCharToProcess::@7 +getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 getCharToProcess::@7 getCharToProcess::@8 + (byte) getCharToProcess::closest_y#6 ← phi( getCharToProcess::@4/(byte) getCharToProcess::closest_y#7 getCharToProcess::@7/(byte) getCharToProcess::closest_y#8 getCharToProcess::@8/(byte) getCharToProcess::closest_y#1 ) + (byte) getCharToProcess::closest_x#6 ← phi( getCharToProcess::@4/(byte) getCharToProcess::closest_x#7 getCharToProcess::@7/(byte) getCharToProcess::closest_x#8 getCharToProcess::@8/(byte) getCharToProcess::closest_x#1 ) + (word) getCharToProcess::closest_dist#9 ← phi( getCharToProcess::@4/(word) getCharToProcess::closest_dist#5 getCharToProcess::@7/(word) getCharToProcess::closest_dist#2 getCharToProcess::@8/(word) getCharToProcess::closest_dist#1 ) + (byte) getCharToProcess::y#6 ← phi( getCharToProcess::@4/(byte) getCharToProcess::y#5 getCharToProcess::@7/(byte) getCharToProcess::y#2 getCharToProcess::@8/(byte) getCharToProcess::y#3 ) + (byte*) getCharToProcess::screen_line#5 ← phi( getCharToProcess::@4/(byte*) getCharToProcess::screen_line#2 getCharToProcess::@7/(byte*) getCharToProcess::screen_line#6 getCharToProcess::@8/(byte*) getCharToProcess::screen_line#7 ) + (byte) getCharToProcess::x#3 ← phi( getCharToProcess::@4/(byte) getCharToProcess::x#2 getCharToProcess::@7/(byte) getCharToProcess::x#4 getCharToProcess::@8/(byte) getCharToProcess::x#5 ) + (byte) getCharToProcess::x#1 ← (byte) getCharToProcess::x#3 + rangenext(0,$27) + (bool~) getCharToProcess::$7 ← (byte) getCharToProcess::x#1 != rangelast(0,$27) + if((bool~) getCharToProcess::$7) goto getCharToProcess::@4 + to:getCharToProcess::@9 +getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@4 + (byte) getCharToProcess::closest_y#8 ← phi( getCharToProcess::@4/(byte) getCharToProcess::closest_y#7 ) + (byte) getCharToProcess::closest_x#8 ← phi( getCharToProcess::@4/(byte) getCharToProcess::closest_x#7 ) + (byte*) getCharToProcess::screen_line#6 ← phi( getCharToProcess::@4/(byte*) getCharToProcess::screen_line#2 ) + (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@4/(word) getCharToProcess::closest_dist#5 ) + (byte) getCharToProcess::y#2 ← phi( getCharToProcess::@4/(byte) getCharToProcess::y#5 ) + (byte) getCharToProcess::x#4 ← phi( getCharToProcess::@4/(byte) getCharToProcess::x#2 ) + (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#4 * (const byte) SIZEOF_WORD + (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#2 * (const byte) SIZEOF_WORD + (word~) getCharToProcess::$4 ← *((word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + (word) getCharToProcess::dist#0 ← (word~) getCharToProcess::$4 + (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 + (bool~) getCharToProcess::$6 ← ! (bool~) getCharToProcess::$5 + if((bool~) getCharToProcess::$6) goto getCharToProcess::@5 + to:getCharToProcess::@8 +getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 + (byte*) getCharToProcess::screen_line#7 ← phi( getCharToProcess::@7/(byte*) getCharToProcess::screen_line#6 ) + (word) getCharToProcess::dist#1 ← phi( getCharToProcess::@7/(word) getCharToProcess::dist#0 ) + (byte) getCharToProcess::y#3 ← phi( getCharToProcess::@7/(byte) getCharToProcess::y#2 ) + (byte) getCharToProcess::x#5 ← phi( getCharToProcess::@7/(byte) getCharToProcess::x#4 ) + (byte) getCharToProcess::closest_x#1 ← (byte) getCharToProcess::x#5 + (byte) getCharToProcess::closest_y#1 ← (byte) getCharToProcess::y#3 + (word) getCharToProcess::closest_dist#1 ← (word) getCharToProcess::dist#1 + to:getCharToProcess::@5 +getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@5 + (byte) getCharToProcess::closest_y#5 ← phi( getCharToProcess::@5/(byte) getCharToProcess::closest_y#6 ) + (byte) getCharToProcess::closest_x#5 ← phi( getCharToProcess::@5/(byte) getCharToProcess::closest_x#6 ) + (word) getCharToProcess::closest_dist#6 ← phi( getCharToProcess::@5/(word) getCharToProcess::closest_dist#9 ) + (byte) getCharToProcess::y#4 ← phi( getCharToProcess::@5/(byte) getCharToProcess::y#6 ) + (byte*) getCharToProcess::screen_line#3 ← phi( getCharToProcess::@5/(byte*) getCharToProcess::screen_line#5 ) + (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#3 + (number) $28 + (byte) getCharToProcess::y#1 ← (byte) getCharToProcess::y#4 + rangenext(0,$18) + (bool~) getCharToProcess::$8 ← (byte) getCharToProcess::y#1 != rangelast(0,$18) + if((bool~) getCharToProcess::$8) goto getCharToProcess::@3 + to:getCharToProcess::@10 +getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@9 + (byte) getCharToProcess::closest_y#4 ← phi( getCharToProcess::@9/(byte) getCharToProcess::closest_y#5 ) + (byte) getCharToProcess::closest_x#4 ← phi( getCharToProcess::@9/(byte) getCharToProcess::closest_x#5 ) + (word) getCharToProcess::closest_dist#3 ← phi( getCharToProcess::@9/(word) getCharToProcess::closest_dist#6 ) + (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 + (bool~) getCharToProcess::$1 ← ! (bool~) getCharToProcess::$0 + if((bool~) getCharToProcess::$1) goto getCharToProcess::@1 + to:getCharToProcess::@11 +getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess::@10 getCharToProcess::@11 + (word) getCharToProcess::closest_dist#4 ← phi( getCharToProcess::@10/(word) getCharToProcess::closest_dist#3 getCharToProcess::@11/(word) getCharToProcess::closest_dist#7 ) + (byte) getCharToProcess::closest_y#2 ← phi( getCharToProcess::@10/(byte) getCharToProcess::closest_y#4 getCharToProcess::@11/(byte) getCharToProcess::closest_y#3 ) + (byte) getCharToProcess::closest_x#2 ← phi( getCharToProcess::@10/(byte) getCharToProcess::closest_x#4 getCharToProcess::@11/(byte) getCharToProcess::closest_x#3 ) + (byte) getCharToProcess::return_x#1 ← (byte) getCharToProcess::closest_x#2 + (byte) getCharToProcess::return_y#1 ← (byte) getCharToProcess::closest_y#2 + (word) getCharToProcess::return_dist#1 ← (word) getCharToProcess::closest_dist#4 + to:getCharToProcess::@return +getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@10 + (word) getCharToProcess::closest_dist#7 ← phi( getCharToProcess::@10/(word) getCharToProcess::closest_dist#3 ) + (byte) getCharToProcess::closest_x#3 ← phi( getCharToProcess::@10/(byte) getCharToProcess::closest_x#4 ) + (byte) getCharToProcess::closest_y#3 ← phi( getCharToProcess::@10/(byte) getCharToProcess::closest_y#4 ) + (word~) getCharToProcess::$9 ← ((word)) (byte) getCharToProcess::closest_y#3 + (number~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (number) $28 + (byte*~) getCharToProcess::$11 ← (byte[$3e8]) SCREEN_COPY#0 + (number~) getCharToProcess::$10 + (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::closest_x#3 + *((byte*~) getCharToProcess::$12) ← (byte) ' ' + to:getCharToProcess::@1 +getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@1 + (word) getCharToProcess::return_dist#4 ← phi( getCharToProcess::@1/(word) getCharToProcess::return_dist#1 ) + (byte) getCharToProcess::return_y#4 ← phi( getCharToProcess::@1/(byte) getCharToProcess::return_y#1 ) + (byte) getCharToProcess::return_x#4 ← phi( getCharToProcess::@1/(byte) getCharToProcess::return_x#1 ) + (byte) getCharToProcess::return_x#2 ← (byte) getCharToProcess::return_x#4 + (byte) getCharToProcess::return_y#2 ← (byte) getCharToProcess::return_y#4 + (word) getCharToProcess::return_dist#2 ← (word) getCharToProcess::return_dist#4 return to:@return setupRasterIrq: scope:[setupRasterIrq] from main::@2 @@ -783,11 +774,13 @@ SYMBOL TABLE SSA (byte) LIGHT_BLUE#0 (word) NOT_FOUND (word) NOT_FOUND#0 +(byte) NUM_PROCESSING +(byte) NUM_PROCESSING#0 (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST = (byte) 2 (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X = (byte) 0 (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y = (byte) 1 -(struct ProcessingChar[8]) PROCESSING -(struct ProcessingChar[8]) PROCESSING#0 +(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING +(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 (byte*) PROCPORT (byte*) PROCPORT#0 (byte*) PROCPORT_DDR @@ -819,113 +812,113 @@ SYMBOL TABLE SSA (byte*) VIC_CONTROL#0 (byte) WHITE (byte) WHITE#0 -(struct ProcessingChar()) getCenterChar() -(bool~) getCenterChar::$0 -(bool~) getCenterChar::$1 -(number~) getCenterChar::$10 -(byte*~) getCenterChar::$11 -(byte*~) getCenterChar::$12 -(byte~) getCenterChar::$13 -(byte~) getCenterChar::$14 -(bool~) getCenterChar::$2 -(bool~) getCenterChar::$3 -(word~) getCenterChar::$4 -(bool~) getCenterChar::$5 -(bool~) getCenterChar::$6 -(bool~) getCenterChar::$7 -(bool~) getCenterChar::$8 -(word~) getCenterChar::$9 -(label) getCenterChar::@1 -(label) getCenterChar::@10 -(label) getCenterChar::@11 -(label) getCenterChar::@3 -(label) getCenterChar::@4 -(label) getCenterChar::@5 -(label) getCenterChar::@7 -(label) getCenterChar::@8 -(label) getCenterChar::@9 -(label) getCenterChar::@return -(struct ProcessingChar) getCenterChar::closest -(word) getCenterChar::closest_dist -(word) getCenterChar::closest_dist#0 -(word) getCenterChar::closest_dist#1 -(word) getCenterChar::closest_dist#2 -(word) getCenterChar::closest_dist#3 -(word) getCenterChar::closest_dist#4 -(word) getCenterChar::closest_dist#5 -(word) getCenterChar::closest_dist#6 -(word) getCenterChar::closest_dist#7 -(word) getCenterChar::closest_dist#8 -(word) getCenterChar::closest_dist#9 -(byte) getCenterChar::closest_x -(byte) getCenterChar::closest_x#0 -(byte) getCenterChar::closest_x#1 -(byte) getCenterChar::closest_x#2 -(byte) getCenterChar::closest_x#3 -(byte) getCenterChar::closest_x#4 -(byte) getCenterChar::closest_x#5 -(byte) getCenterChar::closest_x#6 -(byte) getCenterChar::closest_x#7 -(byte) getCenterChar::closest_x#8 -(byte) getCenterChar::closest_x#9 -(byte) getCenterChar::closest_y -(byte) getCenterChar::closest_y#0 -(byte) getCenterChar::closest_y#1 -(byte) getCenterChar::closest_y#2 -(byte) getCenterChar::closest_y#3 -(byte) getCenterChar::closest_y#4 -(byte) getCenterChar::closest_y#5 -(byte) getCenterChar::closest_y#6 -(byte) getCenterChar::closest_y#7 -(byte) getCenterChar::closest_y#8 -(byte) getCenterChar::closest_y#9 -(word) getCenterChar::dist -(word) getCenterChar::dist#0 -(word) getCenterChar::dist#1 -(struct ProcessingChar) getCenterChar::return -(word) getCenterChar::return_dist -(word) getCenterChar::return_dist#0 -(word) getCenterChar::return_dist#1 -(word) getCenterChar::return_dist#2 -(word) getCenterChar::return_dist#3 -(word) getCenterChar::return_dist#4 -(byte) getCenterChar::return_x -(byte) getCenterChar::return_x#0 -(byte) getCenterChar::return_x#1 -(byte) getCenterChar::return_x#2 -(byte) getCenterChar::return_x#3 -(byte) getCenterChar::return_x#4 -(byte) getCenterChar::return_y -(byte) getCenterChar::return_y#0 -(byte) getCenterChar::return_y#1 -(byte) getCenterChar::return_y#2 -(byte) getCenterChar::return_y#3 -(byte) getCenterChar::return_y#4 -(byte*) getCenterChar::screen_line -(byte*) getCenterChar::screen_line#0 -(byte*) getCenterChar::screen_line#1 -(byte*) getCenterChar::screen_line#2 -(byte*) getCenterChar::screen_line#3 -(byte*) getCenterChar::screen_line#4 -(byte*) getCenterChar::screen_line#5 -(byte*) getCenterChar::screen_line#6 -(byte*) getCenterChar::screen_line#7 -(byte) getCenterChar::x -(byte) getCenterChar::x#0 -(byte) getCenterChar::x#1 -(byte) getCenterChar::x#2 -(byte) getCenterChar::x#3 -(byte) getCenterChar::x#4 -(byte) getCenterChar::x#5 -(byte) getCenterChar::y -(byte) getCenterChar::y#0 -(byte) getCenterChar::y#1 -(byte) getCenterChar::y#2 -(byte) getCenterChar::y#3 -(byte) getCenterChar::y#4 -(byte) getCenterChar::y#5 -(byte) getCenterChar::y#6 -(byte) getCenterChar::y#7 +(struct ProcessingChar()) getCharToProcess() +(bool~) getCharToProcess::$0 +(bool~) getCharToProcess::$1 +(number~) getCharToProcess::$10 +(byte*~) getCharToProcess::$11 +(byte*~) getCharToProcess::$12 +(byte~) getCharToProcess::$13 +(byte~) getCharToProcess::$14 +(bool~) getCharToProcess::$2 +(bool~) getCharToProcess::$3 +(word~) getCharToProcess::$4 +(bool~) getCharToProcess::$5 +(bool~) getCharToProcess::$6 +(bool~) getCharToProcess::$7 +(bool~) getCharToProcess::$8 +(word~) getCharToProcess::$9 +(label) getCharToProcess::@1 +(label) getCharToProcess::@10 +(label) getCharToProcess::@11 +(label) getCharToProcess::@3 +(label) getCharToProcess::@4 +(label) getCharToProcess::@5 +(label) getCharToProcess::@7 +(label) getCharToProcess::@8 +(label) getCharToProcess::@9 +(label) getCharToProcess::@return +(struct ProcessingChar) getCharToProcess::closest +(word) getCharToProcess::closest_dist +(word) getCharToProcess::closest_dist#0 +(word) getCharToProcess::closest_dist#1 +(word) getCharToProcess::closest_dist#2 +(word) getCharToProcess::closest_dist#3 +(word) getCharToProcess::closest_dist#4 +(word) getCharToProcess::closest_dist#5 +(word) getCharToProcess::closest_dist#6 +(word) getCharToProcess::closest_dist#7 +(word) getCharToProcess::closest_dist#8 +(word) getCharToProcess::closest_dist#9 +(byte) getCharToProcess::closest_x +(byte) getCharToProcess::closest_x#0 +(byte) getCharToProcess::closest_x#1 +(byte) getCharToProcess::closest_x#2 +(byte) getCharToProcess::closest_x#3 +(byte) getCharToProcess::closest_x#4 +(byte) getCharToProcess::closest_x#5 +(byte) getCharToProcess::closest_x#6 +(byte) getCharToProcess::closest_x#7 +(byte) getCharToProcess::closest_x#8 +(byte) getCharToProcess::closest_x#9 +(byte) getCharToProcess::closest_y +(byte) getCharToProcess::closest_y#0 +(byte) getCharToProcess::closest_y#1 +(byte) getCharToProcess::closest_y#2 +(byte) getCharToProcess::closest_y#3 +(byte) getCharToProcess::closest_y#4 +(byte) getCharToProcess::closest_y#5 +(byte) getCharToProcess::closest_y#6 +(byte) getCharToProcess::closest_y#7 +(byte) getCharToProcess::closest_y#8 +(byte) getCharToProcess::closest_y#9 +(word) getCharToProcess::dist +(word) getCharToProcess::dist#0 +(word) getCharToProcess::dist#1 +(struct ProcessingChar) getCharToProcess::return +(word) getCharToProcess::return_dist +(word) getCharToProcess::return_dist#0 +(word) getCharToProcess::return_dist#1 +(word) getCharToProcess::return_dist#2 +(word) getCharToProcess::return_dist#3 +(word) getCharToProcess::return_dist#4 +(byte) getCharToProcess::return_x +(byte) getCharToProcess::return_x#0 +(byte) getCharToProcess::return_x#1 +(byte) getCharToProcess::return_x#2 +(byte) getCharToProcess::return_x#3 +(byte) getCharToProcess::return_x#4 +(byte) getCharToProcess::return_y +(byte) getCharToProcess::return_y#0 +(byte) getCharToProcess::return_y#1 +(byte) getCharToProcess::return_y#2 +(byte) getCharToProcess::return_y#3 +(byte) getCharToProcess::return_y#4 +(byte*) getCharToProcess::screen_line +(byte*) getCharToProcess::screen_line#0 +(byte*) getCharToProcess::screen_line#1 +(byte*) getCharToProcess::screen_line#2 +(byte*) getCharToProcess::screen_line#3 +(byte*) getCharToProcess::screen_line#4 +(byte*) getCharToProcess::screen_line#5 +(byte*) getCharToProcess::screen_line#6 +(byte*) getCharToProcess::screen_line#7 +(byte) getCharToProcess::x +(byte) getCharToProcess::x#0 +(byte) getCharToProcess::x#1 +(byte) getCharToProcess::x#2 +(byte) getCharToProcess::x#3 +(byte) getCharToProcess::x#4 +(byte) getCharToProcess::x#5 +(byte) getCharToProcess::y +(byte) getCharToProcess::y#0 +(byte) getCharToProcess::y#1 +(byte) getCharToProcess::y#2 +(byte) getCharToProcess::y#3 +(byte) getCharToProcess::y#4 +(byte) getCharToProcess::y#5 +(byte) getCharToProcess::y#6 +(byte) getCharToProcess::y#7 (void()) initSquareTables() (bool~) initSquareTables::$0 (number~) initSquareTables::$1 @@ -1007,38 +1000,32 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#2 (void()) main() (void()*~) main::$0 -(bool~) main::$10 -(struct ProcessingChar~) main::$11 -(word) main::$11_dist -(byte) main::$11_x -(byte) main::$11_y -(bool~) main::$12 -(bool~) main::$13 -(byte*~) main::$17 -(byte~) main::$18 -(byte*) main::$19 -(byte*) main::$20 -(word*) main::$21 -(bool~) main::$3 -(byte*~) main::$4 -(byte~) main::$5 -(number~) main::$6 -(number~) main::$7 +(byte*~) main::$13 +(byte~) main::$14 +(byte*) main::$15 +(byte*) main::$16 +(word*) main::$17 +(number~) main::$3 +(bool~) main::$4 +(byte*~) main::$5 +(bool~) main::$6 +(struct ProcessingChar~) main::$7 +(word) main::$7_dist +(byte) main::$7_x +(byte) main::$7_y (bool~) main::$8 -(byte*~) main::$9 +(bool~) main::$9 (label) main::@1 +(label) main::@11 (label) main::@13 +(label) main::@14 (label) main::@15 (label) main::@16 -(label) main::@17 -(label) main::@18 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@5 (label) main::@6 -(label) main::@7 -(label) main::@8 (label) main::@return (struct ProcessingChar) main::center (word) main::center_dist @@ -1058,10 +1045,6 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) main::i#0 (byte) main::i#1 (byte) main::i#2 -(byte*) main::sc -(byte*) main::sc#0 -(byte*) main::sc#1 -(byte*) main::sc#2 (byte*) main::src (byte*) main::src#0 (byte*) main::src#1 @@ -1117,25 +1100,26 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#5 (word) mul8u::return#6 (void()) processChars() -(bool~) processChars::$0 +(number~) processChars::$0 (bool~) processChars::$1 -(bool~) processChars::$10 +(byte*~) processChars::$10 (bool~) processChars::$11 (bool~) processChars::$12 -(byte~) processChars::$13 +(bool~) processChars::$13 (byte~) processChars::$14 (byte~) processChars::$15 -(byte*) processChars::$16 +(byte~) processChars::$16 (byte*) processChars::$17 -(word*) processChars::$19 -(word~) processChars::$2 +(byte*) processChars::$18 +(bool~) processChars::$2 (word*) processChars::$20 -(number~) processChars::$3 -(byte*~) processChars::$4 +(word*) processChars::$21 +(word~) processChars::$3 +(number~) processChars::$4 (byte*~) processChars::$5 -(word~) processChars::$6 -(number~) processChars::$7 -(byte*~) processChars::$8 +(byte*~) processChars::$6 +(word~) processChars::$7 +(number~) processChars::$8 (byte*~) processChars::$9 (label) processChars::@1 (label) processChars::@10 @@ -1185,15 +1169,16 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster#3 (word) setupRasterIrq::raster#4 (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) -(bool~) startProcessing::$0 +(number~) startProcessing::$0 (bool~) startProcessing::$1 +(word*) startProcessing::$10 (bool~) startProcessing::$2 (bool~) startProcessing::$3 -(byte~) startProcessing::$4 +(bool~) startProcessing::$4 (byte~) startProcessing::$5 -(byte*) startProcessing::$6 +(byte~) startProcessing::$6 (byte*) startProcessing::$7 -(word*) startProcessing::$8 +(byte*) startProcessing::$8 (word*) startProcessing::$9 (label) startProcessing::@1 (label) startProcessing::@2 @@ -1260,20 +1245,23 @@ Adding number conversion cast (unumber) 0 in (bool~) mul8u::$2 ← (unumber~) mu Adding number conversion cast (unumber) 1 in (byte~) mul8u::$5 ← (byte) mul8u::a#5 >> (number) 1 Adding number conversion cast (unumber) 1 in (word~) mul8u::$6 ← (word) mul8u::mb#2 << (number) 1 Adding number conversion cast (unumber) $ffff in (word) NOT_FOUND#0 ← (number) $ffff -Adding number conversion cast (unumber) 0 in *((byte*) main::$19 + (byte~) main::$18) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((byte*) main::$20 + (byte~) main::$18) ← (number) 0 -Adding number conversion cast (unumber) $3e7 in (byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e7 -Adding number conversion cast (unumber) $1f in (number~) main::$6 ← (byte~) main::$5 & (number) $1f -Adding number conversion cast (unumber) main::$6 in (number~) main::$6 ← (byte~) main::$5 & (unumber)(number) $1f -Adding number conversion cast (unumber) main::$7 in (number~) main::$7 ← (byte) 'a' + (unumber~) main::$6 -Adding number conversion cast (unumber) $3e7 in (byte*~) main::$9 ← (byte*) SCREEN#0 + (number) $3e7 -Adding number conversion cast (unumber) $3e7 in (byte*~) main::$17 ← (byte*) SCREEN#0 + (number) $3e7 +Adding number conversion cast (unumber) 1 in (number~) main::$3 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) main::$3 in (number~) main::$3 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in *((byte*) main::$15 + (byte~) main::$14) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((byte*) main::$16 + (byte~) main::$14) ← (number) 0 +Adding number conversion cast (unumber) $3e8 in (byte*~) main::$5 ← (byte*) SCREEN#0 + (number) $3e8 +Adding number conversion cast (unumber) $3e7 in (byte*~) main::$13 ← (byte*) SCREEN#0 + (number) $3e7 +Adding number conversion cast (unumber) $10 in (byte) NUM_PROCESSING#0 ← (number) $10 Adding number conversion cast (unumber) $ff in (byte) startProcessing::freeIdx#0 ← (number) $ff -Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$3 ← (byte) startProcessing::freeIdx#2 == (number) $ff -Adding number conversion cast (unumber) $28 in (number~) processChars::$3 ← (word~) processChars::$2 * (number) $28 -Adding number conversion cast (unumber) processChars::$3 in (number~) processChars::$3 ← (word~) processChars::$2 * (unumber)(number) $28 -Adding number conversion cast (unumber) $28 in (number~) processChars::$7 ← (word~) processChars::$6 * (number) $28 -Adding number conversion cast (unumber) processChars::$7 in (number~) processChars::$7 ← (word~) processChars::$6 * (unumber)(number) $28 +Adding number conversion cast (unumber) 1 in (number~) startProcessing::$0 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) startProcessing::$0 in (number~) startProcessing::$0 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$4 ← (byte) startProcessing::freeIdx#2 == (number) $ff +Adding number conversion cast (unumber) 1 in (number~) processChars::$0 ← (byte) NUM_PROCESSING#0 - (number) 1 +Adding number conversion cast (unumber) processChars::$0 in (number~) processChars::$0 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1 +Adding number conversion cast (unumber) $28 in (number~) processChars::$4 ← (word~) processChars::$3 * (number) $28 +Adding number conversion cast (unumber) processChars::$4 in (number~) processChars::$4 ← (word~) processChars::$3 * (unumber)(number) $28 +Adding number conversion cast (unumber) $28 in (number~) processChars::$8 ← (word~) processChars::$7 * (number) $28 +Adding number conversion cast (unumber) processChars::$8 in (number~) processChars::$8 ← (word~) processChars::$7 * (unumber)(number) $28 Adding number conversion cast (unumber) $14 in (bool~) initSquareTables::$0 ← (byte) initSquareTables::x#2 < (number) $14 Adding number conversion cast (unumber) $14 in (number~) initSquareTables::$3 ← (number) $14 - (byte) initSquareTables::x#3 Adding number conversion cast (unumber) initSquareTables::$3 in (number~) initSquareTables::$3 ← (unumber)(number) $14 - (byte) initSquareTables::x#3 @@ -1292,11 +1280,11 @@ Adding number conversion cast (unumber) initSquareTables::$9 in (number~) initSq Adding number conversion cast (unumber) initSquareTables::$10 in (number~) initSquareTables::$10 ← (unumber~) initSquareTables::$9 Adding number conversion cast (unumber) initSquareTables::$13 in (byte) initSquareTables::y#6 ← phi( initSquareTables::@10/(byte) initSquareTables::y#4 initSquareTables::@9/(byte) initSquareTables::y#3 ) (number~) initSquareTables::$13 ← phi( initSquareTables::@9/(unumber~) initSquareTables::$12 initSquareTables::@10/(unumber~) initSquareTables::$10 ) -Adding number conversion cast (unumber) 0 in (byte) getCenterChar::closest_x#0 ← (number) 0 -Adding number conversion cast (unumber) 0 in (byte) getCenterChar::closest_y#0 ← (number) 0 -Adding number conversion cast (unumber) $28 in (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#3 + (number) $28 -Adding number conversion cast (unumber) $28 in (number~) getCenterChar::$10 ← (word~) getCenterChar::$9 * (number) $28 -Adding number conversion cast (unumber) getCenterChar::$10 in (number~) getCenterChar::$10 ← (word~) getCenterChar::$9 * (unumber)(number) $28 +Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_x#0 ← (number) 0 +Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_y#0 ← (number) 0 +Adding number conversion cast (unumber) $28 in (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#3 + (number) $28 +Adding number conversion cast (unumber) $28 in (number~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (number) $28 +Adding number conversion cast (unumber) getCharToProcess::$10 in (number~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (unumber)(number) $28 Adding number conversion cast (unumber) $100 in (bool~) setupRasterIrq::$0 ← (word) setupRasterIrq::raster#1 < (number) $100 Adding number conversion cast (unumber) $7f in *((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) & (number) $7f Adding number conversion cast (unumber) $80 in *((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) | (number) $80 @@ -1324,14 +1312,15 @@ Inlining cast (byte) LIGHT_BLUE#0 ← (unumber)(number) $e Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0 Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400 Inlining cast (word) NOT_FOUND#0 ← (unumber)(number) $ffff -Inlining cast *((byte*) main::$19 + (byte~) main::$18) ← (unumber)(number) 0 -Inlining cast *((byte*) main::$20 + (byte~) main::$18) ← (unumber)(number) 0 +Inlining cast *((byte*) main::$15 + (byte~) main::$14) ← (unumber)(number) 0 +Inlining cast *((byte*) main::$16 + (byte~) main::$14) ← (unumber)(number) 0 +Inlining cast (byte) NUM_PROCESSING#0 ← (unumber)(number) $10 Inlining cast (byte) startProcessing::freeIdx#0 ← (unumber)(number) $ff -Inlining cast (word~) processChars::$2 ← (word)(byte) processChars::processing_y#0 -Inlining cast (word~) processChars::$6 ← (word)(byte) processChars::processing_y#0 -Inlining cast (byte) getCenterChar::closest_x#0 ← (unumber)(number) 0 -Inlining cast (byte) getCenterChar::closest_y#0 ← (unumber)(number) 0 -Inlining cast (word~) getCenterChar::$9 ← (word)(byte) getCenterChar::closest_y#3 +Inlining cast (word~) processChars::$3 ← (word)(byte) processChars::processing_y#0 +Inlining cast (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0 +Inlining cast (byte) getCharToProcess::closest_x#0 ← (unumber)(number) 0 +Inlining cast (byte) getCharToProcess::closest_y#0 ← (unumber)(number) 0 +Inlining cast (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::closest_y#3 Inlining cast (byte) RASTER_IRQ_TOP#0 ← (unumber)(number) $30 Inlining cast (byte) RASTER_IRQ_MIDDLE#0 ← (unumber)(number) $ff Successful SSA optimization Pass2InlineCast @@ -1361,14 +1350,16 @@ Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $ffff +Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast 0 +Simplifying constant integer cast $3e8 Simplifying constant integer cast $3e7 -Simplifying constant integer cast $1f -Simplifying constant integer cast $3e7 -Simplifying constant integer cast $3e7 +Simplifying constant integer cast $10 Simplifying constant integer cast $ff +Simplifying constant integer cast 1 Simplifying constant integer cast $ff +Simplifying constant integer cast 1 Simplifying constant integer cast $28 Simplifying constant integer cast $28 Simplifying constant integer cast $14 @@ -1401,14 +1392,16 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (word) $ffff +Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 +Finalized unsigned number type (word) $3e8 Finalized unsigned number type (word) $3e7 -Finalized unsigned number type (byte) $1f -Finalized unsigned number type (word) $3e7 -Finalized unsigned number type (word) $3e7 +Finalized unsigned number type (byte) $10 Finalized unsigned number type (byte) $ff +Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) $ff +Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) $14 @@ -1428,10 +1421,11 @@ Finalized unsigned number type (byte) $30 Finalized unsigned number type (byte) $ff Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) mul8u::$1 ← (byte) mul8u::a#4 & (byte) 1 -Inferred type updated to byte in (unumber~) main::$6 ← (byte~) main::$5 & (byte) $1f -Inferred type updated to byte in (unumber~) main::$7 ← (byte) 'a' + (byte~) main::$6 -Inferred type updated to word in (unumber~) processChars::$3 ← (word~) processChars::$2 * (byte) $28 -Inferred type updated to word in (unumber~) processChars::$7 ← (word~) processChars::$6 * (byte) $28 +Inferred type updated to byte in (unumber~) main::$3 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to byte in (unumber~) startProcessing::$0 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to byte in (unumber~) processChars::$0 ← (byte) NUM_PROCESSING#0 - (byte) 1 +Inferred type updated to word in (unumber~) processChars::$4 ← (word~) processChars::$3 * (byte) $28 +Inferred type updated to word in (unumber~) processChars::$8 ← (word~) processChars::$7 * (byte) $28 Inferred type updated to byte in (unumber~) initSquareTables::$3 ← (byte) $14 - (byte) initSquareTables::x#3 Inferred type updated to byte in (unumber~) initSquareTables::$4 ← (byte~) initSquareTables::$3 Inferred type updated to byte in (unumber~) initSquareTables::$1 ← (byte) initSquareTables::x#4 - (byte) $14 @@ -1442,14 +1436,14 @@ Inferred type updated to byte in (unumber~) initSquareTables::$12 ← (byte~) in Inferred type updated to byte in (unumber~) initSquareTables::$9 ← (byte) initSquareTables::y#4 - (byte) $c Inferred type updated to byte in (unumber~) initSquareTables::$10 ← (byte~) initSquareTables::$9 Inferred type updated to byte for (unumber~) initSquareTables::$13 -Inferred type updated to word in (unumber~) getCenterChar::$10 ← (word~) getCenterChar::$9 * (byte) $28 +Inferred type updated to word in (unumber~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (byte) $28 Inversing boolean not [27] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [26] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 -Inversing boolean not [93] (bool~) main::$13 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [92] (bool~) main::$12 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 -Inversing boolean not [114] (bool~) startProcessing::$1 ← *((word*) startProcessing::$9 + (byte~) startProcessing::$4) != (word) NOT_FOUND#0 from [113] (bool~) startProcessing::$0 ← *((word*) startProcessing::$9 + (byte~) startProcessing::$4) == (word) NOT_FOUND#0 -Inversing boolean not [139] (bool~) processChars::$1 ← *((word*) processChars::$19 + (byte~) processChars::$13) == (word) NOT_FOUND#0 from [138] (bool~) processChars::$0 ← *((word*) processChars::$19 + (byte~) processChars::$13) != (word) NOT_FOUND#0 -Inversing boolean not [233] (bool~) getCenterChar::$3 ← *((byte*) getCenterChar::screen_line#2 + (byte) getCenterChar::x#2) == (byte) ' ' from [232] (bool~) getCenterChar::$2 ← *((byte*) getCenterChar::screen_line#2 + (byte) getCenterChar::x#2) != (byte) ' ' -Inversing boolean not [245] (bool~) getCenterChar::$6 ← (word) getCenterChar::dist#0 >= (word) getCenterChar::closest_dist#2 from [244] (bool~) getCenterChar::$5 ← (word) getCenterChar::dist#0 < (word) getCenterChar::closest_dist#2 -Inversing boolean not [258] (bool~) getCenterChar::$1 ← (word) getCenterChar::closest_dist#3 == (word) NOT_FOUND#0 from [257] (bool~) getCenterChar::$0 ← (word) getCenterChar::closest_dist#3 != (word) NOT_FOUND#0 +Inversing boolean not [84] (bool~) main::$9 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [83] (bool~) main::$8 ← (word) main::center_dist#0 == (word) NOT_FOUND#0 +Inversing boolean not [107] (bool~) startProcessing::$2 ← *((word*) startProcessing::$10 + (byte~) startProcessing::$5) != (word) NOT_FOUND#0 from [106] (bool~) startProcessing::$1 ← *((word*) startProcessing::$10 + (byte~) startProcessing::$5) == (word) NOT_FOUND#0 +Inversing boolean not [133] (bool~) processChars::$2 ← *((word*) processChars::$20 + (byte~) processChars::$14) == (word) NOT_FOUND#0 from [132] (bool~) processChars::$1 ← *((word*) processChars::$20 + (byte~) processChars::$14) != (word) NOT_FOUND#0 +Inversing boolean not [227] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [226] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' ' +Inversing boolean not [239] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [238] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2 +Inversing boolean not [252] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [251] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) mul8u::mb#0 = (byte) mul8u::b#2 Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7 @@ -1459,12 +1453,12 @@ Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 Alias (word) mul8u::mb#1 = (word~) mul8u::$6 Alias (word) mul8u::res#1 = (word~) mul8u::$4 Alias (void()*) setupRasterIrq::irqRoutine#0 = (void()*~) main::$0 -Alias (byte) getCenterChar::return_x#0 = (byte) getCenterChar::return_x#3 -Alias (byte) getCenterChar::return_y#0 = (byte) getCenterChar::return_y#3 -Alias (word) getCenterChar::return_dist#0 = (word) getCenterChar::return_dist#3 -Alias (byte) main::center_x#0 = (byte) main::$11_x (byte) main::center_x#1 -Alias (byte) main::center_y#0 = (byte) main::$11_y (byte) main::center_y#1 -Alias (word) main::center_dist#0 = (word) main::$11_dist (word) main::center_dist#1 +Alias (byte) getCharToProcess::return_x#0 = (byte) getCharToProcess::return_x#3 +Alias (byte) getCharToProcess::return_y#0 = (byte) getCharToProcess::return_y#3 +Alias (word) getCharToProcess::return_dist#0 = (word) getCharToProcess::return_dist#3 +Alias (byte) main::center_x#0 = (byte) main::$7_x (byte) main::center_x#1 +Alias (byte) main::center_y#0 = (byte) main::$7_y (byte) main::center_y#1 +Alias (word) main::center_dist#0 = (word) main::$7_dist (word) main::center_dist#1 Alias (byte) startProcessing::i#2 = (byte) startProcessing::i#3 (byte) startProcessing::i#4 (byte) startProcessing::freeIdx#1 Alias (byte) startProcessing::freeIdx#4 = (byte) startProcessing::freeIdx#5 Alias (byte) startProcessing::center_x#3 = (byte) startProcessing::center_x#5 (byte) startProcessing::center_x#4 @@ -1475,7 +1469,7 @@ Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#2 Alias (byte) startProcessing::center_y#1 = (byte) startProcessing::center_y#2 Alias (word) startProcessing::center_dist#1 = (word) startProcessing::center_dist#2 Alias (byte) processChars::i#2 = (byte) processChars::i#4 (byte) processChars::i#5 (byte) processChars::i#8 (byte) processChars::i#7 (byte) processChars::i#6 -Alias (byte*) processChars::processing_ptr#0 = (byte*~) processChars::$9 (byte*) processChars::processing_ptr#1 (byte*) processChars::processing_ptr#2 (byte*) processChars::processing_ptr#3 +Alias (byte*) processChars::processing_ptr#0 = (byte*~) processChars::$10 (byte*) processChars::processing_ptr#1 (byte*) processChars::processing_ptr#2 (byte*) processChars::processing_ptr#3 Alias (byte) initSquareTables::x#2 = (byte) initSquareTables::x#3 (byte) initSquareTables::x#4 Alias (byte~) initSquareTables::$4 = (byte~) initSquareTables::$3 Alias (byte~) initSquareTables::$2 = (byte~) initSquareTables::$1 @@ -1488,28 +1482,28 @@ Alias (byte~) initSquareTables::$10 = (byte~) initSquareTables::$9 Alias (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$13 Alias (word) mul8u::return#3 = (word) mul8u::return#6 Alias (byte) initSquareTables::y#5 = (byte) initSquareTables::y#6 -Alias (byte) getCenterChar::x#2 = (byte) getCenterChar::x#4 (byte) getCenterChar::x#5 (byte) getCenterChar::closest_x#1 -Alias (byte) getCenterChar::y#2 = (byte) getCenterChar::y#5 (byte) getCenterChar::y#3 (byte) getCenterChar::closest_y#1 -Alias (word) getCenterChar::closest_dist#2 = (word) getCenterChar::closest_dist#5 -Alias (byte*) getCenterChar::screen_line#2 = (byte*) getCenterChar::screen_line#6 (byte*) getCenterChar::screen_line#7 -Alias (byte) getCenterChar::closest_x#7 = (byte) getCenterChar::closest_x#8 -Alias (byte) getCenterChar::closest_y#7 = (byte) getCenterChar::closest_y#8 -Alias (word) getCenterChar::dist#0 = (word~) getCenterChar::$4 (word) getCenterChar::dist#1 (word) getCenterChar::closest_dist#1 -Alias (byte*) getCenterChar::screen_line#3 = (byte*) getCenterChar::screen_line#5 -Alias (byte) getCenterChar::y#4 = (byte) getCenterChar::y#6 -Alias (word) getCenterChar::closest_dist#3 = (word) getCenterChar::closest_dist#6 (word) getCenterChar::closest_dist#9 (word) getCenterChar::closest_dist#7 -Alias (byte) getCenterChar::closest_x#3 = (byte) getCenterChar::closest_x#5 (byte) getCenterChar::closest_x#6 (byte) getCenterChar::closest_x#4 -Alias (byte) getCenterChar::closest_y#3 = (byte) getCenterChar::closest_y#5 (byte) getCenterChar::closest_y#6 (byte) getCenterChar::closest_y#4 -Alias (byte) getCenterChar::return_x#1 = (byte) getCenterChar::closest_x#2 (byte) getCenterChar::return_x#4 (byte) getCenterChar::return_x#2 -Alias (byte) getCenterChar::return_y#1 = (byte) getCenterChar::closest_y#2 (byte) getCenterChar::return_y#4 (byte) getCenterChar::return_y#2 -Alias (word) getCenterChar::return_dist#1 = (word) getCenterChar::closest_dist#4 (word) getCenterChar::return_dist#4 (word) getCenterChar::return_dist#2 +Alias (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#4 (byte) getCharToProcess::x#5 (byte) getCharToProcess::closest_x#1 +Alias (byte) getCharToProcess::y#2 = (byte) getCharToProcess::y#5 (byte) getCharToProcess::y#3 (byte) getCharToProcess::closest_y#1 +Alias (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#5 +Alias (byte*) getCharToProcess::screen_line#2 = (byte*) getCharToProcess::screen_line#6 (byte*) getCharToProcess::screen_line#7 +Alias (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#8 +Alias (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#8 +Alias (word) getCharToProcess::dist#0 = (word~) getCharToProcess::$4 (word) getCharToProcess::dist#1 (word) getCharToProcess::closest_dist#1 +Alias (byte*) getCharToProcess::screen_line#3 = (byte*) getCharToProcess::screen_line#5 +Alias (byte) getCharToProcess::y#4 = (byte) getCharToProcess::y#6 +Alias (word) getCharToProcess::closest_dist#3 = (word) getCharToProcess::closest_dist#6 (word) getCharToProcess::closest_dist#9 (word) getCharToProcess::closest_dist#7 +Alias (byte) getCharToProcess::closest_x#3 = (byte) getCharToProcess::closest_x#5 (byte) getCharToProcess::closest_x#6 (byte) getCharToProcess::closest_x#4 +Alias (byte) getCharToProcess::closest_y#3 = (byte) getCharToProcess::closest_y#5 (byte) getCharToProcess::closest_y#6 (byte) getCharToProcess::closest_y#4 +Alias (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#2 (byte) getCharToProcess::return_x#4 (byte) getCharToProcess::return_x#2 +Alias (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#2 (byte) getCharToProcess::return_y#4 (byte) getCharToProcess::return_y#2 +Alias (word) getCharToProcess::return_dist#1 = (word) getCharToProcess::closest_dist#4 (word) getCharToProcess::return_dist#4 (word) getCharToProcess::return_dist#2 Alias (word) setupRasterIrq::raster#1 = (word) setupRasterIrq::raster#3 (word) setupRasterIrq::raster#4 Alias (void()*) setupRasterIrq::irqRoutine#2 = (void()*) setupRasterIrq::irqRoutine#4 (void()*) setupRasterIrq::irqRoutine#3 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte) getCenterChar::x#2 -Alias candidate removed (phi-usage) (byte) getCenterChar::y#2 -Alias candidate removed (solo) (byte) getCenterChar::x#3 = -Alias candidate removed (solo) (byte) getCenterChar::y#4 = +Alias candidate removed (phi-usage) (byte) getCharToProcess::x#2 +Alias candidate removed (phi-usage) (byte) getCharToProcess::y#2 +Alias candidate removed (solo) (byte) getCharToProcess::x#3 = +Alias candidate removed (solo) (byte) getCharToProcess::y#4 = Alias (byte) mul8u::a#3 = (byte) mul8u::a#5 Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#3 @@ -1518,22 +1512,22 @@ Alias (word) startProcessing::center_dist#1 = (word) startProcessing::center_dis Alias (byte) processChars::i#2 = (byte) processChars::i#3 Alias (byte) initSquareTables::x#2 = (byte) initSquareTables::x#5 Alias (byte) initSquareTables::y#2 = (byte) initSquareTables::y#5 -Alias (byte*) getCenterChar::screen_line#2 = (byte*) getCenterChar::screen_line#3 -Alias (byte) getCenterChar::return_x#1 = (byte) getCenterChar::closest_x#3 -Alias (byte) getCenterChar::return_y#1 = (byte) getCenterChar::closest_y#3 -Alias (word) getCenterChar::return_dist#1 = (word) getCenterChar::closest_dist#3 +Alias (byte*) getCharToProcess::screen_line#2 = (byte*) getCharToProcess::screen_line#3 +Alias (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#3 +Alias (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#3 +Alias (word) getCharToProcess::return_dist#1 = (word) getCharToProcess::closest_dist#3 Alias (word) setupRasterIrq::raster#1 = (word) setupRasterIrq::raster#2 Alias (void()*) setupRasterIrq::irqRoutine#1 = (void()*) setupRasterIrq::irqRoutine#2 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte) getCenterChar::x#2 -Alias candidate removed (phi-usage) (byte) getCenterChar::y#2 -Alias candidate removed (solo) (byte) getCenterChar::x#3 = -Alias candidate removed (solo) (byte) getCenterChar::y#4 = +Alias candidate removed (phi-usage) (byte) getCharToProcess::x#2 +Alias candidate removed (phi-usage) (byte) getCharToProcess::y#2 +Alias candidate removed (solo) (byte) getCharToProcess::x#3 = +Alias candidate removed (solo) (byte) getCharToProcess::y#4 = Self Phi Eliminated (byte) startProcessing::freeIdx#4 Self Phi Eliminated (byte) startProcessing::center_x#1 Self Phi Eliminated (byte) startProcessing::center_y#1 Self Phi Eliminated (word) startProcessing::center_dist#1 -Self Phi Eliminated (byte*) getCenterChar::screen_line#2 +Self Phi Eliminated (byte*) getCharToProcess::screen_line#2 Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte) startProcessing::center_x#7 (byte) startProcessing::center_x#0 Identical Phi Values (byte) startProcessing::center_y#7 (byte) startProcessing::center_y#0 @@ -1542,46 +1536,44 @@ Identical Phi Values (byte) startProcessing::freeIdx#4 (byte) startProcessing::f Identical Phi Values (byte) startProcessing::center_x#1 (byte) startProcessing::center_x#6 Identical Phi Values (byte) startProcessing::center_y#1 (byte) startProcessing::center_y#6 Identical Phi Values (word) startProcessing::center_dist#1 (word) startProcessing::center_dist#6 -Identical Phi Values (byte*) getCenterChar::screen_line#2 (byte*) getCenterChar::screen_line#4 -Identical Phi Values (byte) getCenterChar::x#3 (byte) getCenterChar::x#2 -Identical Phi Values (byte) getCenterChar::y#4 (byte) getCenterChar::y#2 +Identical Phi Values (byte*) getCharToProcess::screen_line#2 (byte*) getCharToProcess::screen_line#4 +Identical Phi Values (byte) getCharToProcess::x#3 (byte) getCharToProcess::x#2 +Identical Phi Values (byte) getCharToProcess::y#4 (byte) getCharToProcess::y#2 Identical Phi Values (word) setupRasterIrq::raster#1 (word) setupRasterIrq::raster#0 Identical Phi Values (void()*) setupRasterIrq::irqRoutine#1 (void()*) setupRasterIrq::irqRoutine#0 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) mul8u::$0 [23] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 Simple Condition (bool~) mul8u::$3 [28] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 -Simple Condition (bool~) main::$3 [56] if((byte) main::i#1!=rangelast(0,7)) goto main::@1 -Simple Condition (bool~) main::$8 [70] if((byte*) main::sc#1!=rangelast(SCREEN#0,main::$4)) goto main::@3 -Simple Condition (bool~) main::$10 [79] if((byte*) main::src#1!=(byte*~) main::$9) goto main::@5 -Simple Condition (bool~) main::$13 [94] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@8 -Simple Condition (bool~) startProcessing::$1 [115] if(*((word*) startProcessing::$9 + (byte~) startProcessing::$4)!=(word) NOT_FOUND#0) goto startProcessing::@3 -Simple Condition (bool~) startProcessing::$2 [119] if((byte) startProcessing::i#1!=rangelast(0,7)) goto startProcessing::@2 -Simple Condition (bool~) startProcessing::$3 [124] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 -Simple Condition (bool~) processChars::$1 [140] if(*((word*) processChars::$19 + (byte~) processChars::$13)==(word) NOT_FOUND#0) goto processChars::@2 -Simple Condition (bool~) processChars::$12 [144] if((byte) processChars::i#1!=rangelast(0,7)) goto processChars::@1 -Simple Condition (bool~) processChars::$10 [162] if(*((byte*) processChars::processing_ptr#0)==(byte) ' ') goto processChars::@3 -Simple Condition (bool~) processChars::$11 [169] if(*((byte*) processChars::processing_ptr#0)>(byte) ' ') goto processChars::@4 -Simple Condition (bool~) initSquareTables::$0 [180] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -Simple Condition (bool~) initSquareTables::$7 [199] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 -Simple Condition (bool~) initSquareTables::$8 [203] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 -Simple Condition (bool~) initSquareTables::$15 [222] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 -Simple Condition (bool~) getCenterChar::$3 [234] if(*((byte*) getCenterChar::screen_line#4 + (byte) getCenterChar::x#2)==(byte) ' ') goto getCenterChar::@5 -Simple Condition (bool~) getCenterChar::$7 [238] if((byte) getCenterChar::x#1!=rangelast(0,$27)) goto getCenterChar::@4 -Simple Condition (bool~) getCenterChar::$6 [246] if((word) getCenterChar::dist#0>=(word) getCenterChar::closest_dist#2) goto getCenterChar::@5 -Simple Condition (bool~) getCenterChar::$8 [255] if((byte) getCenterChar::y#1!=rangelast(0,$18)) goto getCenterChar::@3 -Simple Condition (bool~) getCenterChar::$1 [259] if((word) getCenterChar::return_dist#1==(word) NOT_FOUND#0) goto getCenterChar::@1 -Simple Condition (bool~) setupRasterIrq::$0 [281] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 -Simple Condition (bool~) irqTop::$1 [298] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 -Simple Condition (bool~) irqTop::$2 [305] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 -Simple Condition (bool~) irqBottom::$2 [318] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 +Simple Condition (bool~) main::$4 [57] if((byte) main::i#1!=rangelast(0,main::$3)) goto main::@1 +Simple Condition (bool~) main::$6 [70] if((byte*) main::src#1!=(byte*~) main::$5) goto main::@3 +Simple Condition (bool~) main::$9 [85] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6 +Simple Condition (bool~) startProcessing::$2 [108] if(*((word*) startProcessing::$10 + (byte~) startProcessing::$5)!=(word) NOT_FOUND#0) goto startProcessing::@3 +Simple Condition (bool~) startProcessing::$3 [112] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$0)) goto startProcessing::@2 +Simple Condition (bool~) startProcessing::$4 [117] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1 +Simple Condition (bool~) processChars::$2 [134] if(*((word*) processChars::$20 + (byte~) processChars::$14)==(word) NOT_FOUND#0) goto processChars::@2 +Simple Condition (bool~) processChars::$13 [138] if((byte) processChars::i#1!=rangelast(0,processChars::$0)) goto processChars::@1 +Simple Condition (bool~) processChars::$11 [156] if(*((byte*) processChars::processing_ptr#0)==(byte) ' ') goto processChars::@3 +Simple Condition (bool~) processChars::$12 [163] if(*((byte*) processChars::processing_ptr#0)>(byte) ' ') goto processChars::@4 +Simple Condition (bool~) initSquareTables::$0 [174] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 +Simple Condition (bool~) initSquareTables::$7 [193] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 +Simple Condition (bool~) initSquareTables::$8 [197] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9 +Simple Condition (bool~) initSquareTables::$15 [216] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 +Simple Condition (bool~) getCharToProcess::$3 [228] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$7 [232] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 +Simple Condition (bool~) getCharToProcess::$6 [240] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5 +Simple Condition (bool~) getCharToProcess::$8 [249] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 +Simple Condition (bool~) getCharToProcess::$1 [253] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1 +Simple Condition (bool~) setupRasterIrq::$0 [275] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +Simple Condition (bool~) irqTop::$1 [292] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 +Simple Condition (bool~) irqTop::$2 [299] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 +Simple Condition (bool~) irqBottom::$2 [312] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [43] (byte[$3e8]) SCREEN_COPY#0 ← { fill( $3e8, 0) } -Constant right-side identified [57] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() -Constant right-side identified [105] (struct ProcessingChar[8]) PROCESSING#0 ← { fill( 8, 0) } -Constant right-side identified [175] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } -Constant right-side identified [176] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } -Constant right-side identified [309] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() -Constant right-side identified [325] (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Constant right-side identified [58] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop() +Constant right-side identified [169] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) } +Constant right-side identified [170] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) } +Constant right-side identified [303] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom() +Constant right-side identified [319] (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop() Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) PROCPORT_DDR#0 = (byte*) 0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -1607,7 +1599,7 @@ Constant (const byte[$3e8]) SCREEN_COPY#0 = { fill( $3e8, 0) } Constant (const word) NOT_FOUND#0 = $ffff Constant (const byte) main::i#0 = 0 Constant (const void()*) setupRasterIrq::irqRoutine#0 = &irqTop -Constant (const struct ProcessingChar[8]) PROCESSING#0 = { fill( 8, 0) } +Constant (const byte) NUM_PROCESSING#0 = $10 Constant (const byte) startProcessing::freeIdx#0 = $ff Constant (const byte) startProcessing::i#0 = 0 Constant (const byte) processChars::i#0 = 0 @@ -1615,10 +1607,10 @@ Constant (const word[$28]) SQUARES_X#0 = { fill( $28, 0) } Constant (const word[$19]) SQUARES_Y#0 = { fill( $19, 0) } Constant (const byte) initSquareTables::x#0 = 0 Constant (const byte) initSquareTables::y#0 = 0 -Constant (const byte) getCenterChar::closest_x#0 = 0 -Constant (const byte) getCenterChar::closest_y#0 = 0 -Constant (const byte) getCenterChar::y#0 = 0 -Constant (const byte) getCenterChar::x#0 = 0 +Constant (const byte) getCharToProcess::closest_x#0 = 0 +Constant (const byte) getCharToProcess::closest_y#0 = 0 +Constant (const byte) getCharToProcess::y#0 = 0 +Constant (const byte) getCharToProcess::x#0 = 0 Constant (const byte) RASTER_IRQ_TOP#0 = $30 Constant (const byte) irqTop::i#0 = 0 Constant (const byte) irqTop::i1#0 = 0 @@ -1628,83 +1620,60 @@ Constant (const byte) irqBottom::i#0 = 0 Constant (const void()*) irqBottom::$1 = &irqTop Successful SSA optimization Pass2ConstantIdentification Constant (const word) setupRasterIrq::raster#0 = RASTER_IRQ_TOP#0 -Constant (const byte*) main::sc#0 = SCREEN#0 Constant (const byte*) main::src#0 = SCREEN#0 Constant (const byte*) main::dst#0 = SCREEN_COPY#0 -Constant (const word) getCenterChar::closest_dist#0 = NOT_FOUND#0 -Constant (const byte*) getCenterChar::screen_line#0 = SCREEN_COPY#0 +Constant (const word) getCharToProcess::closest_dist#0 = NOT_FOUND#0 +Constant (const byte*) getCharToProcess::screen_line#0 = SCREEN_COPY#0 Successful SSA optimization Pass2ConstantIdentification -Constant value identified (byte*)PROCESSING#0 in [48] (byte*) main::$19 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X -Constant value identified (byte*)PROCESSING#0 in [50] (byte*) main::$20 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant value identified (word*)PROCESSING#0 in [52] (word*) main::$21 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant value identified (word*)PROCESSING#0 in [112] (word*) startProcessing::$9 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant value identified (byte*)PROCESSING#0 in [127] (byte*) startProcessing::$6 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X -Constant value identified (byte*)PROCESSING#0 in [129] (byte*) startProcessing::$7 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant value identified (word*)PROCESSING#0 in [131] (word*) startProcessing::$8 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant value identified (word*)PROCESSING#0 in [137] (word*) processChars::$19 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant value identified (byte*)PROCESSING#0 in [147] (byte*) processChars::$16 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X -Constant value identified (byte*)PROCESSING#0 in [149] (byte*) processChars::$17 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant value identified (word*)PROCESSING#0 in [165] (word*) processChars::$20 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST +Constant value identified { fill( NUM_PROCESSING#0, 0) } in [97] (struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) } Successful SSA optimization Pass2ConstantValues -if() condition always true - replacing block destination [100] if(true) goto main::@7 -if() condition always true - replacing block destination [103] if(true) goto main::@13 -if() condition always true - replacing block destination [281] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 +if() condition always true - replacing block destination [91] if(true) goto main::@5 +if() condition always true - replacing block destination [94] if(true) goto main::@11 +if() condition always true - replacing block destination [275] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [54] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [56] if(main::i#1!=rangelast(0,7)) goto main::@1 to (number) 8 -Resolved ranged next value [117] startProcessing::i#1 ← ++ startProcessing::i#2 to ++ -Resolved ranged comparison value [119] if(startProcessing::i#1!=rangelast(0,7)) goto startProcessing::@2 to (number) 8 -Resolved ranged next value [142] processChars::i#1 ← ++ processChars::i#2 to ++ -Resolved ranged comparison value [144] if(processChars::i#1!=rangelast(0,7)) goto processChars::@1 to (number) 8 -Resolved ranged next value [197] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ -Resolved ranged comparison value [199] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 -Resolved ranged next value [220] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ -Resolved ranged comparison value [222] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 -Resolved ranged next value [236] getCenterChar::x#1 ← ++ getCenterChar::x#2 to ++ -Resolved ranged comparison value [238] if(getCenterChar::x#1!=rangelast(0,$27)) goto getCenterChar::@4 to (number) $28 -Resolved ranged next value [253] getCenterChar::y#1 ← ++ getCenterChar::y#2 to ++ -Resolved ranged comparison value [255] if(getCenterChar::y#1!=rangelast(0,$18)) goto getCenterChar::@3 to (number) $19 -Resolved ranged next value [296] irqTop::i#1 ← ++ irqTop::i#2 to ++ -Resolved ranged comparison value [298] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5 -Resolved ranged next value [303] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ -Resolved ranged comparison value [305] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8 -Resolved ranged next value [316] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ -Resolved ranged comparison value [318] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5 -Converting *(pointer+n) to pointer[n] [155] *((byte*~) processChars::$5) ← (const byte) WHITE#0 -- *(processChars::$4 + processChars::processing_x#0) -Converting *(pointer+n) to pointer[n] [162] if(*((byte*) processChars::processing_ptr#0)==(byte) ' ') goto processChars::@3 -- *(processChars::$8 + processChars::processing_x#0) -Converting *(pointer+n) to pointer[n] [169] if(*((byte*) processChars::processing_ptr#0)>(byte) ' ') goto processChars::@4 -- *(processChars::$8 + processChars::processing_x#0) -Converting *(pointer+n) to pointer[n] [171] *((byte*) processChars::processing_ptr#0) ← -- *((byte*) processChars::processing_ptr#0) -- *(processChars::$8 + processChars::processing_x#0) -Converting *(pointer+n) to pointer[n] [171] *((byte*) processChars::processing_ptr#0) ← -- *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) -- *(processChars::$8 + processChars::processing_x#0) -Converting *(pointer+n) to pointer[n] [173] *((byte*) processChars::processing_ptr#0) ← ++ *((byte*) processChars::processing_ptr#0) -- *(processChars::$8 + processChars::processing_x#0) -Converting *(pointer+n) to pointer[n] [173] *((byte*) processChars::processing_ptr#0) ← ++ *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) -- *(processChars::$8 + processChars::processing_x#0) -Converting *(pointer+n) to pointer[n] [269] *((byte*~) getCenterChar::$12) ← (byte) ' ' -- *(getCenterChar::$11 + getCenterChar::return_x#1) +Resolved ranged next value [191] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++ +Resolved ranged comparison value [193] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28 +Resolved ranged next value [214] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++ +Resolved ranged comparison value [216] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19 +Resolved ranged next value [230] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++ +Resolved ranged comparison value [232] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28 +Resolved ranged next value [247] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++ +Resolved ranged comparison value [249] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19 +Resolved ranged next value [290] irqTop::i#1 ← ++ irqTop::i#2 to ++ +Resolved ranged comparison value [292] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5 +Resolved ranged next value [297] irqTop::i1#1 ← ++ irqTop::i1#2 to ++ +Resolved ranged comparison value [299] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8 +Resolved ranged next value [310] irqBottom::i#1 ← ++ irqBottom::i#2 to ++ +Resolved ranged comparison value [312] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5 +Converting *(pointer+n) to pointer[n] [149] *((byte*~) processChars::$6) ← (const byte) WHITE#0 -- *(processChars::$5 + processChars::processing_x#0) +Converting *(pointer+n) to pointer[n] [156] if(*((byte*) processChars::processing_ptr#0)==(byte) ' ') goto processChars::@3 -- *(processChars::$9 + processChars::processing_x#0) +Converting *(pointer+n) to pointer[n] [163] if(*((byte*) processChars::processing_ptr#0)>(byte) ' ') goto processChars::@4 -- *(processChars::$9 + processChars::processing_x#0) +Converting *(pointer+n) to pointer[n] [165] *((byte*) processChars::processing_ptr#0) ← -- *((byte*) processChars::processing_ptr#0) -- *(processChars::$9 + processChars::processing_x#0) +Converting *(pointer+n) to pointer[n] [165] *((byte*) processChars::processing_ptr#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) -- *(processChars::$9 + processChars::processing_x#0) +Converting *(pointer+n) to pointer[n] [167] *((byte*) processChars::processing_ptr#0) ← ++ *((byte*) processChars::processing_ptr#0) -- *(processChars::$9 + processChars::processing_x#0) +Converting *(pointer+n) to pointer[n] [167] *((byte*) processChars::processing_ptr#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) -- *(processChars::$9 + processChars::processing_x#0) +Converting *(pointer+n) to pointer[n] [263] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1) Successful SSA optimization Pass2InlineDerefIdx -Simplifying expression containing zero (byte*)PROCESSING#0 in [48] (byte*) main::$19 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X -Simplifying expression containing zero (byte*)PROCESSING#0 in [127] (byte*) startProcessing::$6 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X -Simplifying expression containing zero (byte*)PROCESSING#0 in [147] (byte*) processChars::$16 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X +Simplifying expression containing zero (byte*)PROCESSING#0 in [49] (byte*) main::$15 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X +Simplifying expression containing zero (byte*)PROCESSING#0 in [120] (byte*) startProcessing::$7 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X +Simplifying expression containing zero (byte*)PROCESSING#0 in [141] (byte*) processChars::$17 ← (byte*)(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X Successful SSA optimization PassNSimplifyExpressionWithZero -Eliminating unused variable (byte*~) processChars::$5 and assignment [82] (byte*~) processChars::$5 ← (byte*~) processChars::$4 + (byte) processChars::processing_x#0 -Eliminating unused variable (byte*) processChars::processing_ptr#0 and assignment [87] (byte*) processChars::processing_ptr#0 ← (byte*~) processChars::$8 + (byte) processChars::processing_x#0 -Eliminating unused variable (byte*~) getCenterChar::$12 and assignment [142] (byte*~) getCenterChar::$12 ← (byte*~) getCenterChar::$11 + (byte) getCenterChar::return_x#1 +Eliminating unused variable (byte*~) processChars::$6 and assignment [78] (byte*~) processChars::$6 ← (byte*~) processChars::$5 + (byte) processChars::processing_x#0 +Eliminating unused variable (byte*) processChars::processing_ptr#0 and assignment [83] (byte*) processChars::processing_ptr#0 ← (byte*~) processChars::$9 + (byte) processChars::processing_x#0 +Eliminating unused variable (byte*~) getCharToProcess::$12 and assignment [138] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1 Eliminating unused constant (const byte) OFFSET_STRUCT_PROCESSINGCHAR_X Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Removing unused block setupRasterIrq::@3 Successful SSA optimization Pass2EliminateUnusedBlocks -Adding number conversion cast (unumber) 8 in if((byte) main::i#1!=(number) 8) goto main::@1 -Adding number conversion cast (unumber) 8 in if((byte) startProcessing::i#1!=(number) 8) goto startProcessing::@2 -Adding number conversion cast (unumber) 8 in if((byte) processChars::i#1!=(number) 8) goto processChars::@1 Adding number conversion cast (unumber) $28 in if((byte) initSquareTables::x#1!=(number) $28) goto initSquareTables::@1 Adding number conversion cast (unumber) $19 in if((byte) initSquareTables::y#1!=(number) $19) goto initSquareTables::@8 -Adding number conversion cast (unumber) $28 in if((byte) getCenterChar::x#1!=(number) $28) goto getCenterChar::@4 -Adding number conversion cast (unumber) $19 in if((byte) getCenterChar::y#1!=(number) $19) goto getCenterChar::@3 +Adding number conversion cast (unumber) $28 in if((byte) getCharToProcess::x#1!=(number) $28) goto getCharToProcess::@4 +Adding number conversion cast (unumber) $19 in if((byte) getCharToProcess::y#1!=(number) $19) goto getCharToProcess::@3 Adding number conversion cast (unumber) 5 in if((byte) irqTop::i#1!=(number) 5) goto irqTop::@1 Adding number conversion cast (unumber) 8 in if((byte) irqTop::i1#1!=(number) 8) goto irqTop::@3 Adding number conversion cast (unumber) 5 in if((byte) irqBottom::i#1!=(number) 5) goto irqBottom::@1 Successful SSA optimization PassNAddNumberTypeConversions -Simplifying constant integer cast 8 -Simplifying constant integer cast 8 -Simplifying constant integer cast 8 Simplifying constant integer cast $28 Simplifying constant integer cast $19 Simplifying constant integer cast $28 @@ -1713,9 +1682,6 @@ Simplifying constant integer cast 5 Simplifying constant integer cast 8 Simplifying constant integer cast 5 Successful SSA optimization PassNCastSimplification -Finalized unsigned number type (byte) 8 -Finalized unsigned number type (byte) 8 -Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) $19 Finalized unsigned number type (byte) $28 @@ -1727,68 +1693,101 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Self Phi Eliminated (byte) startProcessing::center_x#6 Self Phi Eliminated (byte) startProcessing::center_y#6 Self Phi Eliminated (word) startProcessing::center_dist#6 -Self Phi Eliminated (byte) getCenterChar::y#2 +Self Phi Eliminated (byte) getCharToProcess::y#2 Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte) startProcessing::center_x#6 (byte) startProcessing::center_x#0 Identical Phi Values (byte) startProcessing::center_y#6 (byte) startProcessing::center_y#0 Identical Phi Values (word) startProcessing::center_dist#6 (word) startProcessing::center_dist#0 -Identical Phi Values (byte) getCenterChar::y#2 (byte) getCenterChar::y#7 +Identical Phi Values (byte) getCharToProcess::y#2 (byte) getCharToProcess::y#7 Successful SSA optimization Pass2IdenticalPhiElimination -Constant right-side identified [14] (byte*) main::$20 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant right-side identified [16] (word*) main::$21 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant right-side identified [21] (byte*~) main::$4 ← (const byte*) SCREEN#0 + (word) $3e7 -Constant right-side identified [33] (byte*~) main::$9 ← (const byte*) SCREEN#0 + (word) $3e7 -Constant right-side identified [48] (byte*~) main::$17 ← (const byte*) SCREEN#0 + (word) $3e7 -Constant right-side identified [53] (word*) startProcessing::$9 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant right-side identified [62] (byte*) startProcessing::$7 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant right-side identified [64] (word*) startProcessing::$8 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant right-side identified [69] (word*) processChars::$19 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant right-side identified [76] (byte*) processChars::$17 ← (byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant right-side identified [87] (word*) processChars::$20 ← (word*)(const struct ProcessingChar[8]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant right-side identified [146] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0 +Constant right-side identified [10] (byte~) main::$3 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [26] (byte*~) main::$5 ← (const byte*) SCREEN#0 + (word) $3e8 +Constant right-side identified [41] (byte*~) main::$13 ← (const byte*) SCREEN#0 + (word) $3e7 +Constant right-side identified [45] (byte~) startProcessing::$0 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [62] (byte~) processChars::$0 ← (const byte) NUM_PROCESSING#0 - (byte) 1 +Constant right-side identified [142] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0 Successful SSA optimization Pass2ConstantRValueConsolidation -Constant (const byte*) main::$19 = (byte*)PROCESSING#0 -Constant (const byte*) main::$20 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant (const word*) main::$21 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant (const byte*) main::$4 = SCREEN#0+$3e7 -Constant (const byte*) main::$9 = SCREEN#0+$3e7 -Constant (const byte*) main::$17 = SCREEN#0+$3e7 -Constant (const word*) startProcessing::$9 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant (const byte*) startProcessing::$6 = (byte*)PROCESSING#0 -Constant (const byte*) startProcessing::$7 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant (const word*) startProcessing::$8 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant (const word*) processChars::$19 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGCHAR_DIST -Constant (const byte*) processChars::$16 = (byte*)PROCESSING#0 -Constant (const byte*) processChars::$17 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGCHAR_Y -Constant (const word*) processChars::$20 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGCHAR_DIST +Constant (const byte) main::$3 = NUM_PROCESSING#0-1 +Constant (const byte*) main::$5 = SCREEN#0+$3e8 +Constant (const byte*) main::$13 = SCREEN#0+$3e7 +Constant (const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 = { fill( NUM_PROCESSING#0, 0) } +Constant (const byte) startProcessing::$0 = NUM_PROCESSING#0-1 +Constant (const byte) processChars::$0 = NUM_PROCESSING#0-1 Constant (const byte) setupRasterIrq::$1 = =(word) getCenterChar::closest_dist#2) goto getCenterChar::@12 - to:getCenterChar::@5 -getCenterChar::@5: scope:[getCenterChar] from getCenterChar::@4 - [66] (byte~) getCenterChar::return_x#7 ← (byte) getCenterChar::x#2 - [67] (byte~) getCenterChar::return_y#7 ← (byte) getCenterChar::y#7 - to:getCenterChar::@3 -getCenterChar::@3: scope:[getCenterChar] from getCenterChar::@11 getCenterChar::@12 getCenterChar::@5 - [68] (byte) getCenterChar::return_y#1 ← phi( getCenterChar::@11/(byte) getCenterChar::closest_y#7 getCenterChar::@12/(byte) getCenterChar::closest_y#7 getCenterChar::@5/(byte~) getCenterChar::return_y#7 ) - [68] (byte) getCenterChar::return_x#1 ← phi( getCenterChar::@11/(byte) getCenterChar::closest_x#7 getCenterChar::@12/(byte) getCenterChar::closest_x#7 getCenterChar::@5/(byte~) getCenterChar::return_x#7 ) - [68] (word) getCenterChar::return_dist#1 ← phi( getCenterChar::@11/(word~) getCenterChar::return_dist#5 getCenterChar::@12/(word~) getCenterChar::return_dist#6 getCenterChar::@5/(word) getCenterChar::dist#0 ) - [69] (byte) getCenterChar::x#1 ← ++ (byte) getCenterChar::x#2 - [70] if((byte) getCenterChar::x#1!=(byte) $28) goto getCenterChar::@10 - to:getCenterChar::@6 -getCenterChar::@6: scope:[getCenterChar] from getCenterChar::@3 - [71] (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#4 + (byte) $28 - [72] (byte) getCenterChar::y#1 ← ++ (byte) getCenterChar::y#7 - [73] if((byte) getCenterChar::y#1!=(byte) $19) goto getCenterChar::@9 - to:getCenterChar::@7 -getCenterChar::@7: scope:[getCenterChar] from getCenterChar::@6 - [74] if((word) getCenterChar::return_dist#1==(const word) NOT_FOUND#0) goto getCenterChar::@return - to:getCenterChar::@8 -getCenterChar::@8: scope:[getCenterChar] from getCenterChar::@7 - [75] (word~) getCenterChar::$9 ← (word)(byte) getCenterChar::return_y#1 - [76] (word) getCenterChar::$15 ← (word~) getCenterChar::$9 << (byte) 2 - [77] (word) getCenterChar::$16 ← (word) getCenterChar::$15 + (word~) getCenterChar::$9 - [78] (word~) getCenterChar::$10 ← (word) getCenterChar::$16 << (byte) 3 - [79] (byte*~) getCenterChar::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCenterChar::$10 - [80] *((byte*~) getCenterChar::$11 + (byte) getCenterChar::return_x#1) ← (byte) ' ' - to:getCenterChar::@return -getCenterChar::@return: scope:[getCenterChar] from getCenterChar::@7 getCenterChar::@8 - [81] return +getCharToProcess: scope:[getCharToProcess] from main::@5 + [51] phi() + to:getCharToProcess::@1 +getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9 + [52] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) + [52] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) + [52] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 ) + [52] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) + [52] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) + to:getCharToProcess::@2 +getCharToProcess::@2: scope:[getCharToProcess] from getCharToProcess::@1 getCharToProcess::@10 + [53] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) + [53] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) + [53] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 ) + [53] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) + [54] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 + to:getCharToProcess::@4 +getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2 + [55] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 + [56] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 + [57] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) + [58] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + to:getCharToProcess::@5 +getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 + [59] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [60] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + to:getCharToProcess::@3 +getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 + [61] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 ) + [61] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 ) + [61] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 ) + [62] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [63] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + to:getCharToProcess::@6 +getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 + [64] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [65] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [66] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + to:getCharToProcess::@7 +getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 + [67] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return + to:getCharToProcess::@8 +getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 + [68] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 + [69] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 + [70] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 + [71] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 + [72] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 + [73] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + to:getCharToProcess::@return +getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 + [74] return to:@return -getCenterChar::@9: scope:[getCenterChar] from getCenterChar::@6 - [82] (word~) getCenterChar::closest_dist#10 ← (word) getCenterChar::return_dist#1 - to:getCenterChar::@1 -getCenterChar::@10: scope:[getCenterChar] from getCenterChar::@3 - [83] (word~) getCenterChar::closest_dist#12 ← (word) getCenterChar::return_dist#1 - to:getCenterChar::@2 -getCenterChar::@12: scope:[getCenterChar] from getCenterChar::@4 - [84] (word~) getCenterChar::return_dist#6 ← (word) getCenterChar::closest_dist#2 - to:getCenterChar::@3 -getCenterChar::@11: scope:[getCenterChar] from getCenterChar::@2 - [85] (word~) getCenterChar::return_dist#5 ← (word) getCenterChar::closest_dist#2 - to:getCenterChar::@3 -initSquareTables: scope:[initSquareTables] from main::@5 - [86] phi() +getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 + [75] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 + to:getCharToProcess::@1 +getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 + [76] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 + to:getCharToProcess::@2 +getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 + [77] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 + to:getCharToProcess::@3 +getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 + [78] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 + to:getCharToProcess::@3 +initSquareTables: scope:[initSquareTables] from main::@4 + [79] phi() to:initSquareTables::@1 initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9 - [87] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) - [88] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 + [80] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 ) + [81] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 to:initSquareTables::@3 initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1 - [89] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 + [82] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 to:initSquareTables::@4 initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3 - [90] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) - [91] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 - [92] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - [93] call mul8u - [94] (word) mul8u::return#2 ← (word) mul8u::res#2 + [83] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 ) + [84] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 + [85] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + [86] call mul8u + [87] (word) mul8u::return#2 ← (word) mul8u::res#2 to:initSquareTables::@9 initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4 - [95] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - [96] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 - [97] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 - [98] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 - [99] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 + [88] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + [89] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 + [90] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 + [91] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 + [92] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 to:initSquareTables::@5 initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9 - [100] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) - [101] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 + [93] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 ) + [94] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 to:initSquareTables::@7 initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5 - [102] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c + [95] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c to:initSquareTables::@8 initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7 - [103] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) - [104] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 - [105] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - [106] call mul8u - [107] (word) mul8u::return#3 ← (word) mul8u::res#2 + [96] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 ) + [97] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 + [98] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + [99] call mul8u + [100] (word) mul8u::return#3 ← (word) mul8u::res#2 to:initSquareTables::@10 initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8 - [108] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - [109] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 - [110] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 - [111] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 - [112] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 + [101] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + [102] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 + [103] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 + [104] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 + [105] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 to:initSquareTables::@return initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10 - [113] return + [106] return to:@return initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5 - [114] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 + [107] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 to:initSquareTables::@8 initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1 - [115] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 + [108] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 to:initSquareTables::@4 mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8 - [116] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) - [116] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) + [109] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 ) + [109] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [117] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [117] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [117] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [118] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [110] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [110] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [110] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [111] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [119] return + [112] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [120] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [121] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [113] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [114] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [115] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [123] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [124] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [116] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [117] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [118] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 setupRasterIrq: scope:[setupRasterIrq] from main::@2 asm { sei } - [127] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [128] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [129] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [120] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [121] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [122] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [130] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [123] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [131] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 - [132] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [133] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 + [124] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 + [125] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [126] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [135] return + [128] return to:@return irqBottom: scope:[irqBottom] from - [136] phi() + [129] phi() to:irqBottom::@1 irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1 - [137] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) - [138] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 - [139] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 + [130] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 ) + [131] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 + [132] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 to:irqBottom::@2 irqBottom::@2: scope:[irqBottom] from irqBottom::@1 - [140] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [141] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 - [142] call processChars + [133] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 + [134] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [135] call processChars to:irqBottom::@3 irqBottom::@3: scope:[irqBottom] from irqBottom::@2 - [143] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [144] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [145] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 - [146] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() - [147] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [136] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [137] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + [138] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 + [139] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() + [140] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqBottom::@return irqBottom::@return: scope:[irqBottom] from irqBottom::@3 - [148] return + [141] return to:@return processChars: scope:[processChars] from irqBottom::@2 - [149] phi() + [142] phi() to:processChars::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 - [150] (byte) processChars::i#2 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [151] (byte~) processChars::$13 ← (byte) processChars::i#2 << (byte) 2 - [152] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$13)==(const word) NOT_FOUND#0) goto processChars::@2 + [143] (byte) processChars::i#2 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) + [144] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 + [145] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$14)==(const word) NOT_FOUND#0) goto processChars::@2 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@1 - [153] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 - [154] (byte) processChars::processing_x#0 ← *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) processChars::$14) - [155] (byte) processChars::processing_y#0 ← *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) processChars::$14) - [156] (word~) processChars::$2 ← (word)(byte) processChars::processing_y#0 - [157] (word) processChars::$21 ← (word~) processChars::$2 << (byte) 2 - [158] (word) processChars::$22 ← (word) processChars::$21 + (word~) processChars::$2 - [159] (word~) processChars::$3 ← (word) processChars::$22 << (byte) 3 - [160] (byte*~) processChars::$4 ← (const byte*) COLS#0 + (word~) processChars::$3 - [161] *((byte*~) processChars::$4 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 - [162] (word~) processChars::$6 ← (word)(byte) processChars::processing_y#0 - [163] (word) processChars::$24 ← (word~) processChars::$6 << (byte) 2 - [164] (word) processChars::$25 ← (word) processChars::$24 + (word~) processChars::$6 - [165] (word~) processChars::$7 ← (word) processChars::$25 << (byte) 3 - [166] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (word~) processChars::$7 - [167] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 + [146] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 + [147] (byte) processChars::processing_x#0 ← *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$15) + [148] (byte) processChars::processing_y#0 ← *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) processChars::$15) + [149] (word~) processChars::$3 ← (word)(byte) processChars::processing_y#0 + [150] (word) processChars::$22 ← (word~) processChars::$3 << (byte) 2 + [151] (word) processChars::$23 ← (word) processChars::$22 + (word~) processChars::$3 + [152] (word~) processChars::$4 ← (word) processChars::$23 << (byte) 3 + [153] (byte*~) processChars::$5 ← (const byte*) COLS#0 + (word~) processChars::$4 + [154] *((byte*~) processChars::$5 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 + [155] (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0 + [156] (word) processChars::$25 ← (word~) processChars::$7 << (byte) 2 + [157] (word) processChars::$26 ← (word) processChars::$25 + (word~) processChars::$7 + [158] (word~) processChars::$8 ← (word) processChars::$26 << (byte) 3 + [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (word~) processChars::$8 + [160] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 to:processChars::@6 processChars::@6: scope:[processChars] from processChars::@5 - [168] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 + [161] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 to:processChars::@7 processChars::@7: scope:[processChars] from processChars::@6 - [169] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) + [162] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@3 processChars::@4 processChars::@7 - [170] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 - [171] if((byte) processChars::i#1!=(byte) 8) goto processChars::@1 + [163] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 + [164] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 to:processChars::@return processChars::@return: scope:[processChars] from processChars::@2 - [172] return + [165] return to:@return processChars::@4: scope:[processChars] from processChars::@6 - [173] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) + [166] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) to:processChars::@2 processChars::@3: scope:[processChars] from processChars::@5 - [174] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 - [175] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$15) ← (const word) NOT_FOUND#0 + [167] (byte~) processChars::$16 ← (byte) processChars::i#2 << (byte) 2 + [168] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$16) ← (const word) NOT_FOUND#0 to:processChars::@2 irqTop: scope:[irqTop] from - [176] phi() + [169] phi() to:irqTop::@1 irqTop::@1: scope:[irqTop] from irqTop irqTop::@1 - [177] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) - [178] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 - [179] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 + [170] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 ) + [171] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 + [172] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 to:irqTop::@2 irqTop::@2: scope:[irqTop] from irqTop::@1 - [180] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 - [181] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [173] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 + [174] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 to:irqTop::@3 irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3 - [182] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) - [183] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 - [184] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 + [175] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 ) + [176] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 + [177] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 to:irqTop::@4 irqTop::@4: scope:[irqTop] from irqTop::@3 - [185] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [186] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 - [187] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 - [188] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() - [189] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [178] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [179] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + [180] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 + [181] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() + [182] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:irqTop::@return irqTop::@return: scope:[irqTop] from irqTop::@4 - [190] return + [183] return to:@return @@ -2398,7 +2380,8 @@ VARIABLE REGISTER WEIGHTS (byte*) IRQ_STATUS (byte) LIGHT_BLUE (word) NOT_FOUND -(struct ProcessingChar[8]) PROCESSING +(byte) NUM_PROCESSING +(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING (byte*) PROCPORT (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK @@ -2415,51 +2398,51 @@ VARIABLE REGISTER WEIGHTS (word[$19]) SQUARES_Y (byte*) VIC_CONTROL (byte) WHITE -(struct ProcessingChar()) getCenterChar() -(word~) getCenterChar::$10 4.0 -(byte*~) getCenterChar::$11 4.0 -(byte~) getCenterChar::$13 1001.0 -(byte~) getCenterChar::$14 2002.0 -(word) getCenterChar::$15 4.0 -(word) getCenterChar::$16 4.0 -(word~) getCenterChar::$9 3.0 -(struct ProcessingChar) getCenterChar::closest -(word) getCenterChar::closest_dist -(word~) getCenterChar::closest_dist#10 202.0 -(word~) getCenterChar::closest_dist#12 2002.0 -(word) getCenterChar::closest_dist#2 684.1666666666667 -(word) getCenterChar::closest_dist#8 202.0 -(byte) getCenterChar::closest_x -(byte) getCenterChar::closest_x#7 388.0 -(byte) getCenterChar::closest_x#9 202.0 -(byte) getCenterChar::closest_y -(byte) getCenterChar::closest_y#7 388.0 -(byte) getCenterChar::closest_y#9 202.0 -(word) getCenterChar::dist -(word) getCenterChar::dist#0 750.75 -(struct ProcessingChar) getCenterChar::return -(word) getCenterChar::return_dist -(word) getCenterChar::return_dist#0 7.333333333333333 -(word) getCenterChar::return_dist#1 242.23529411764704 -(word~) getCenterChar::return_dist#5 2002.0 -(word~) getCenterChar::return_dist#6 2002.0 -(byte) getCenterChar::return_x -(byte) getCenterChar::return_x#0 7.333333333333333 -(byte) getCenterChar::return_x#1 242.23529411764704 -(byte~) getCenterChar::return_x#7 1001.0 -(byte) getCenterChar::return_y -(byte) getCenterChar::return_y#0 7.333333333333333 -(byte) getCenterChar::return_y#1 228.66666666666669 -(byte~) getCenterChar::return_y#7 2002.0 -(byte*) getCenterChar::screen_line -(byte*) getCenterChar::screen_line#1 50.5 -(byte*) getCenterChar::screen_line#4 80.2 -(byte) getCenterChar::x -(byte) getCenterChar::x#1 1001.0 -(byte) getCenterChar::x#2 455.0 -(byte) getCenterChar::y -(byte) getCenterChar::y#1 101.0 -(byte) getCenterChar::y#7 137.75 +(struct ProcessingChar()) getCharToProcess() +(word~) getCharToProcess::$10 4.0 +(byte*~) getCharToProcess::$11 4.0 +(byte~) getCharToProcess::$13 1001.0 +(byte~) getCharToProcess::$14 2002.0 +(word) getCharToProcess::$15 4.0 +(word) getCharToProcess::$16 4.0 +(word~) getCharToProcess::$9 3.0 +(struct ProcessingChar) getCharToProcess::closest +(word) getCharToProcess::closest_dist +(word~) getCharToProcess::closest_dist#10 202.0 +(word~) getCharToProcess::closest_dist#12 2002.0 +(word) getCharToProcess::closest_dist#2 684.1666666666667 +(word) getCharToProcess::closest_dist#8 202.0 +(byte) getCharToProcess::closest_x +(byte) getCharToProcess::closest_x#7 388.0 +(byte) getCharToProcess::closest_x#9 202.0 +(byte) getCharToProcess::closest_y +(byte) getCharToProcess::closest_y#7 388.0 +(byte) getCharToProcess::closest_y#9 202.0 +(word) getCharToProcess::dist +(word) getCharToProcess::dist#0 750.75 +(struct ProcessingChar) getCharToProcess::return +(word) getCharToProcess::return_dist +(word) getCharToProcess::return_dist#0 7.333333333333333 +(word) getCharToProcess::return_dist#1 242.23529411764704 +(word~) getCharToProcess::return_dist#5 2002.0 +(word~) getCharToProcess::return_dist#6 2002.0 +(byte) getCharToProcess::return_x +(byte) getCharToProcess::return_x#0 7.333333333333333 +(byte) getCharToProcess::return_x#1 242.23529411764704 +(byte~) getCharToProcess::return_x#7 1001.0 +(byte) getCharToProcess::return_y +(byte) getCharToProcess::return_y#0 7.333333333333333 +(byte) getCharToProcess::return_y#1 228.66666666666669 +(byte~) getCharToProcess::return_y#7 2002.0 +(byte*) getCharToProcess::screen_line +(byte*) getCharToProcess::screen_line#1 50.5 +(byte*) getCharToProcess::screen_line#4 80.2 +(byte) getCharToProcess::x +(byte) getCharToProcess::x#1 1001.0 +(byte) getCharToProcess::x#2 455.0 +(byte) getCharToProcess::y +(byte) getCharToProcess::y#1 101.0 +(byte) getCharToProcess::y#7 137.75 (void()) initSquareTables() (byte~) initSquareTables::$10 22.0 (byte~) initSquareTables::$12 22.0 @@ -2491,11 +2474,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 16.5 (byte) irqTop::i1#2 22.0 (void()) main() -(struct ProcessingChar~) main::$11 -(byte~) main::$18 14.666666666666666 -(byte~) main::$5 22.0 -(byte~) main::$6 22.0 -(byte~) main::$7 22.0 +(byte~) main::$14 14.666666666666666 +(struct ProcessingChar~) main::$7 (struct ProcessingChar) main::center (word) main::center_dist (word) main::center_dist#0 8.25 @@ -2509,9 +2489,6 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) main::i (byte) main::i#1 16.5 (byte) main::i#2 6.6000000000000005 -(byte*) main::sc -(byte*) main::sc#1 16.5 -(byte*) main::sc#2 8.8 (byte*) main::src (byte*) main::src#1 11.0 (byte*) main::src#2 16.5 @@ -2538,19 +2515,19 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) mul8u::return#2 22.0 (word) mul8u::return#3 22.0 (void()) processChars() -(byte~) processChars::$13 22.0 -(byte~) processChars::$14 16.5 -(byte~) processChars::$15 22.0 -(word~) processChars::$2 16.5 -(word) processChars::$21 22.0 +(byte~) processChars::$14 22.0 +(byte~) processChars::$15 16.5 +(byte~) processChars::$16 22.0 (word) processChars::$22 22.0 -(word) processChars::$24 22.0 +(word) processChars::$23 22.0 (word) processChars::$25 22.0 -(word~) processChars::$3 22.0 -(byte*~) processChars::$4 22.0 -(word~) processChars::$6 16.5 -(word~) processChars::$7 22.0 -(byte*~) processChars::$8 25.666666666666668 +(word) processChars::$26 22.0 +(word~) processChars::$3 16.5 +(word~) processChars::$4 22.0 +(byte*~) processChars::$5 22.0 +(word~) processChars::$7 16.5 +(word~) processChars::$8 22.0 +(byte*~) processChars::$9 25.666666666666668 (byte) processChars::i (byte) processChars::i#1 16.5 (byte) processChars::i#2 2.391304347826087 @@ -2564,8 +2541,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (void()*) setupRasterIrq::irqRoutine (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) -(byte~) startProcessing::$4 2002.0 -(byte~) startProcessing::$5 2.6666666666666665 +(byte~) startProcessing::$5 2002.0 +(byte~) startProcessing::$6 2.6666666666666665 (struct ProcessingChar) startProcessing::center (word) startProcessing::center_dist (word) startProcessing::center_dist#0 0.8666666666666666 @@ -2586,18 +2563,17 @@ Not consolidating phi with different size mul8u::mb#0 mul8u::b#1 Not consolidating phi with different size mul8u::mb#0 mul8u::b#0 Initial phi equivalence classes [ main::i#2 main::i#1 ] -[ main::sc#2 main::sc#1 ] [ main::src#2 main::src#1 ] [ main::dst#2 main::dst#1 ] [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -[ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] -[ getCenterChar::y#7 getCenterChar::y#1 ] -[ getCenterChar::x#2 getCenterChar::x#1 ] -[ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] -[ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -[ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -[ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 ] +[ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] +[ getCharToProcess::y#7 getCharToProcess::y#1 ] +[ getCharToProcess::x#2 getCharToProcess::x#1 ] +[ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +[ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +[ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +[ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] [ initSquareTables::x#2 initSquareTables::x#1 ] [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] [ initSquareTables::y#2 initSquareTables::y#1 ] @@ -2611,28 +2587,25 @@ Initial phi equivalence classes [ processChars::i#2 processChars::i#1 ] [ irqTop::i#2 irqTop::i#1 ] [ irqTop::i1#2 irqTop::i1#1 ] -Added variable main::$18 to zero page equivalence class [ main::$18 ] -Added variable main::$5 to zero page equivalence class [ main::$5 ] -Added variable main::$6 to zero page equivalence class [ main::$6 ] -Added variable main::$7 to zero page equivalence class [ main::$7 ] -Added variable getCenterChar::return_x#0 to zero page equivalence class [ getCenterChar::return_x#0 ] -Added variable getCenterChar::return_y#0 to zero page equivalence class [ getCenterChar::return_y#0 ] -Added variable getCenterChar::return_dist#0 to zero page equivalence class [ getCenterChar::return_dist#0 ] +Added variable main::$14 to zero page equivalence class [ main::$14 ] +Added variable getCharToProcess::return_x#0 to zero page equivalence class [ getCharToProcess::return_x#0 ] +Added variable getCharToProcess::return_y#0 to zero page equivalence class [ getCharToProcess::return_y#0 ] +Added variable getCharToProcess::return_dist#0 to zero page equivalence class [ getCharToProcess::return_dist#0 ] Added variable main::center_x#0 to zero page equivalence class [ main::center_x#0 ] Added variable main::center_y#0 to zero page equivalence class [ main::center_y#0 ] Added variable main::center_dist#0 to zero page equivalence class [ main::center_dist#0 ] Added variable startProcessing::center_x#0 to zero page equivalence class [ startProcessing::center_x#0 ] Added variable startProcessing::center_y#0 to zero page equivalence class [ startProcessing::center_y#0 ] Added variable startProcessing::center_dist#0 to zero page equivalence class [ startProcessing::center_dist#0 ] -Added variable startProcessing::$4 to zero page equivalence class [ startProcessing::$4 ] Added variable startProcessing::$5 to zero page equivalence class [ startProcessing::$5 ] -Added variable getCenterChar::$13 to zero page equivalence class [ getCenterChar::$13 ] -Added variable getCenterChar::$14 to zero page equivalence class [ getCenterChar::$14 ] -Added variable getCenterChar::$9 to zero page equivalence class [ getCenterChar::$9 ] -Added variable getCenterChar::$15 to zero page equivalence class [ getCenterChar::$15 ] -Added variable getCenterChar::$16 to zero page equivalence class [ getCenterChar::$16 ] -Added variable getCenterChar::$10 to zero page equivalence class [ getCenterChar::$10 ] -Added variable getCenterChar::$11 to zero page equivalence class [ getCenterChar::$11 ] +Added variable startProcessing::$6 to zero page equivalence class [ startProcessing::$6 ] +Added variable getCharToProcess::$13 to zero page equivalence class [ getCharToProcess::$13 ] +Added variable getCharToProcess::$14 to zero page equivalence class [ getCharToProcess::$14 ] +Added variable getCharToProcess::$9 to zero page equivalence class [ getCharToProcess::$9 ] +Added variable getCharToProcess::$15 to zero page equivalence class [ getCharToProcess::$15 ] +Added variable getCharToProcess::$16 to zero page equivalence class [ getCharToProcess::$16 ] +Added variable getCharToProcess::$10 to zero page equivalence class [ getCharToProcess::$10 ] +Added variable getCharToProcess::$11 to zero page equivalence class [ getCharToProcess::$11 ] Added variable mul8u::return#2 to zero page equivalence class [ mul8u::return#2 ] Added variable initSquareTables::$6 to zero page equivalence class [ initSquareTables::$6 ] Added variable initSquareTables::$16 to zero page equivalence class [ initSquareTables::$16 ] @@ -2640,35 +2613,34 @@ Added variable mul8u::return#3 to zero page equivalence class [ mul8u::return#3 Added variable initSquareTables::$14 to zero page equivalence class [ initSquareTables::$14 ] Added variable initSquareTables::$17 to zero page equivalence class [ initSquareTables::$17 ] Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] -Added variable processChars::$13 to zero page equivalence class [ processChars::$13 ] Added variable processChars::$14 to zero page equivalence class [ processChars::$14 ] +Added variable processChars::$15 to zero page equivalence class [ processChars::$15 ] Added variable processChars::processing_x#0 to zero page equivalence class [ processChars::processing_x#0 ] Added variable processChars::processing_y#0 to zero page equivalence class [ processChars::processing_y#0 ] -Added variable processChars::$2 to zero page equivalence class [ processChars::$2 ] -Added variable processChars::$21 to zero page equivalence class [ processChars::$21 ] -Added variable processChars::$22 to zero page equivalence class [ processChars::$22 ] Added variable processChars::$3 to zero page equivalence class [ processChars::$3 ] +Added variable processChars::$22 to zero page equivalence class [ processChars::$22 ] +Added variable processChars::$23 to zero page equivalence class [ processChars::$23 ] Added variable processChars::$4 to zero page equivalence class [ processChars::$4 ] -Added variable processChars::$6 to zero page equivalence class [ processChars::$6 ] -Added variable processChars::$24 to zero page equivalence class [ processChars::$24 ] -Added variable processChars::$25 to zero page equivalence class [ processChars::$25 ] +Added variable processChars::$5 to zero page equivalence class [ processChars::$5 ] Added variable processChars::$7 to zero page equivalence class [ processChars::$7 ] +Added variable processChars::$25 to zero page equivalence class [ processChars::$25 ] +Added variable processChars::$26 to zero page equivalence class [ processChars::$26 ] Added variable processChars::$8 to zero page equivalence class [ processChars::$8 ] -Added variable processChars::$15 to zero page equivalence class [ processChars::$15 ] +Added variable processChars::$9 to zero page equivalence class [ processChars::$9 ] +Added variable processChars::$16 to zero page equivalence class [ processChars::$16 ] Complete equivalence classes [ main::i#2 main::i#1 ] -[ main::sc#2 main::sc#1 ] [ main::src#2 main::src#1 ] [ main::dst#2 main::dst#1 ] [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -[ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] -[ getCenterChar::y#7 getCenterChar::y#1 ] -[ getCenterChar::x#2 getCenterChar::x#1 ] -[ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] -[ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -[ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -[ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 ] +[ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] +[ getCharToProcess::y#7 getCharToProcess::y#1 ] +[ getCharToProcess::x#2 getCharToProcess::x#1 ] +[ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +[ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +[ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +[ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] [ initSquareTables::x#2 initSquareTables::x#1 ] [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] [ initSquareTables::y#2 initSquareTables::y#1 ] @@ -2682,28 +2654,25 @@ Complete equivalence classes [ processChars::i#2 processChars::i#1 ] [ irqTop::i#2 irqTop::i#1 ] [ irqTop::i1#2 irqTop::i1#1 ] -[ main::$18 ] -[ main::$5 ] -[ main::$6 ] -[ main::$7 ] -[ getCenterChar::return_x#0 ] -[ getCenterChar::return_y#0 ] -[ getCenterChar::return_dist#0 ] +[ main::$14 ] +[ getCharToProcess::return_x#0 ] +[ getCharToProcess::return_y#0 ] +[ getCharToProcess::return_dist#0 ] [ main::center_x#0 ] [ main::center_y#0 ] [ main::center_dist#0 ] [ startProcessing::center_x#0 ] [ startProcessing::center_y#0 ] [ startProcessing::center_dist#0 ] -[ startProcessing::$4 ] [ startProcessing::$5 ] -[ getCenterChar::$13 ] -[ getCenterChar::$14 ] -[ getCenterChar::$9 ] -[ getCenterChar::$15 ] -[ getCenterChar::$16 ] -[ getCenterChar::$10 ] -[ getCenterChar::$11 ] +[ startProcessing::$6 ] +[ getCharToProcess::$13 ] +[ getCharToProcess::$14 ] +[ getCharToProcess::$9 ] +[ getCharToProcess::$15 ] +[ getCharToProcess::$16 ] +[ getCharToProcess::$10 ] +[ getCharToProcess::$11 ] [ mul8u::return#2 ] [ initSquareTables::$6 ] [ initSquareTables::$16 ] @@ -2711,91 +2680,87 @@ Complete equivalence classes [ initSquareTables::$14 ] [ initSquareTables::$17 ] [ mul8u::$1 ] -[ processChars::$13 ] [ processChars::$14 ] +[ processChars::$15 ] [ processChars::processing_x#0 ] [ processChars::processing_y#0 ] -[ processChars::$2 ] -[ processChars::$21 ] -[ processChars::$22 ] [ processChars::$3 ] +[ processChars::$22 ] +[ processChars::$23 ] [ processChars::$4 ] -[ processChars::$6 ] -[ processChars::$24 ] -[ processChars::$25 ] +[ processChars::$5 ] [ processChars::$7 ] +[ processChars::$25 ] +[ processChars::$26 ] [ processChars::$8 ] -[ processChars::$15 ] +[ processChars::$9 ] +[ processChars::$16 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Allocated zp ZP_WORD:3 [ main::sc#2 main::sc#1 ] -Allocated zp ZP_WORD:5 [ main::src#2 main::src#1 ] -Allocated zp ZP_WORD:7 [ main::dst#2 main::dst#1 ] -Allocated zp ZP_BYTE:9 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Allocated zp ZP_BYTE:10 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Allocated zp ZP_WORD:11 [ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] -Allocated zp ZP_BYTE:13 [ getCenterChar::y#7 getCenterChar::y#1 ] -Allocated zp ZP_BYTE:14 [ getCenterChar::x#2 getCenterChar::x#1 ] -Allocated zp ZP_WORD:15 [ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] -Allocated zp ZP_BYTE:17 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -Allocated zp ZP_BYTE:18 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -Allocated zp ZP_WORD:19 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 ] -Allocated zp ZP_BYTE:21 [ initSquareTables::x#2 initSquareTables::x#1 ] -Allocated zp ZP_BYTE:22 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] -Allocated zp ZP_BYTE:23 [ initSquareTables::y#2 initSquareTables::y#1 ] -Allocated zp ZP_BYTE:24 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] -Allocated zp ZP_BYTE:25 [ mul8u::b#1 ] -Allocated zp ZP_BYTE:26 [ mul8u::b#0 ] -Allocated zp ZP_BYTE:27 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Allocated zp ZP_WORD:28 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] -Allocated zp ZP_WORD:30 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -Allocated zp ZP_BYTE:32 [ irqBottom::i#2 irqBottom::i#1 ] -Allocated zp ZP_BYTE:33 [ processChars::i#2 processChars::i#1 ] -Allocated zp ZP_BYTE:34 [ irqTop::i#2 irqTop::i#1 ] -Allocated zp ZP_BYTE:35 [ irqTop::i1#2 irqTop::i1#1 ] -Allocated zp ZP_BYTE:36 [ main::$18 ] -Allocated zp ZP_BYTE:37 [ main::$5 ] -Allocated zp ZP_BYTE:38 [ main::$6 ] -Allocated zp ZP_BYTE:39 [ main::$7 ] -Allocated zp ZP_BYTE:40 [ getCenterChar::return_x#0 ] -Allocated zp ZP_BYTE:41 [ getCenterChar::return_y#0 ] -Allocated zp ZP_WORD:42 [ getCenterChar::return_dist#0 ] -Allocated zp ZP_BYTE:44 [ main::center_x#0 ] -Allocated zp ZP_BYTE:45 [ main::center_y#0 ] -Allocated zp ZP_WORD:46 [ main::center_dist#0 ] -Allocated zp ZP_BYTE:48 [ startProcessing::center_x#0 ] -Allocated zp ZP_BYTE:49 [ startProcessing::center_y#0 ] -Allocated zp ZP_WORD:50 [ startProcessing::center_dist#0 ] -Allocated zp ZP_BYTE:52 [ startProcessing::$4 ] -Allocated zp ZP_BYTE:53 [ startProcessing::$5 ] -Allocated zp ZP_BYTE:54 [ getCenterChar::$13 ] -Allocated zp ZP_BYTE:55 [ getCenterChar::$14 ] -Allocated zp ZP_WORD:56 [ getCenterChar::$9 ] -Allocated zp ZP_WORD:58 [ getCenterChar::$15 ] -Allocated zp ZP_WORD:60 [ getCenterChar::$16 ] -Allocated zp ZP_WORD:62 [ getCenterChar::$10 ] -Allocated zp ZP_WORD:64 [ getCenterChar::$11 ] -Allocated zp ZP_WORD:66 [ mul8u::return#2 ] -Allocated zp ZP_WORD:68 [ initSquareTables::$6 ] -Allocated zp ZP_BYTE:70 [ initSquareTables::$16 ] -Allocated zp ZP_WORD:71 [ mul8u::return#3 ] -Allocated zp ZP_WORD:73 [ initSquareTables::$14 ] -Allocated zp ZP_BYTE:75 [ initSquareTables::$17 ] -Allocated zp ZP_BYTE:76 [ mul8u::$1 ] -Allocated zp ZP_BYTE:77 [ processChars::$13 ] -Allocated zp ZP_BYTE:78 [ processChars::$14 ] -Allocated zp ZP_BYTE:79 [ processChars::processing_x#0 ] -Allocated zp ZP_BYTE:80 [ processChars::processing_y#0 ] -Allocated zp ZP_WORD:81 [ processChars::$2 ] -Allocated zp ZP_WORD:83 [ processChars::$21 ] -Allocated zp ZP_WORD:85 [ processChars::$22 ] -Allocated zp ZP_WORD:87 [ processChars::$3 ] -Allocated zp ZP_WORD:89 [ processChars::$4 ] -Allocated zp ZP_WORD:91 [ processChars::$6 ] -Allocated zp ZP_WORD:93 [ processChars::$24 ] -Allocated zp ZP_WORD:95 [ processChars::$25 ] -Allocated zp ZP_WORD:97 [ processChars::$7 ] -Allocated zp ZP_WORD:99 [ processChars::$8 ] -Allocated zp ZP_BYTE:101 [ processChars::$15 ] +Allocated zp ZP_WORD:3 [ main::src#2 main::src#1 ] +Allocated zp ZP_WORD:5 [ main::dst#2 main::dst#1 ] +Allocated zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Allocated zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] +Allocated zp ZP_WORD:9 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] +Allocated zp ZP_BYTE:11 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Allocated zp ZP_BYTE:12 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Allocated zp ZP_WORD:13 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +Allocated zp ZP_BYTE:15 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Allocated zp ZP_BYTE:16 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Allocated zp ZP_WORD:17 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] +Allocated zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] +Allocated zp ZP_BYTE:20 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] +Allocated zp ZP_BYTE:21 [ initSquareTables::y#2 initSquareTables::y#1 ] +Allocated zp ZP_BYTE:22 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] +Allocated zp ZP_BYTE:23 [ mul8u::b#1 ] +Allocated zp ZP_BYTE:24 [ mul8u::b#0 ] +Allocated zp ZP_BYTE:25 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] +Allocated zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] +Allocated zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +Allocated zp ZP_BYTE:30 [ irqBottom::i#2 irqBottom::i#1 ] +Allocated zp ZP_BYTE:31 [ processChars::i#2 processChars::i#1 ] +Allocated zp ZP_BYTE:32 [ irqTop::i#2 irqTop::i#1 ] +Allocated zp ZP_BYTE:33 [ irqTop::i1#2 irqTop::i1#1 ] +Allocated zp ZP_BYTE:34 [ main::$14 ] +Allocated zp ZP_BYTE:35 [ getCharToProcess::return_x#0 ] +Allocated zp ZP_BYTE:36 [ getCharToProcess::return_y#0 ] +Allocated zp ZP_WORD:37 [ getCharToProcess::return_dist#0 ] +Allocated zp ZP_BYTE:39 [ main::center_x#0 ] +Allocated zp ZP_BYTE:40 [ main::center_y#0 ] +Allocated zp ZP_WORD:41 [ main::center_dist#0 ] +Allocated zp ZP_BYTE:43 [ startProcessing::center_x#0 ] +Allocated zp ZP_BYTE:44 [ startProcessing::center_y#0 ] +Allocated zp ZP_WORD:45 [ startProcessing::center_dist#0 ] +Allocated zp ZP_BYTE:47 [ startProcessing::$5 ] +Allocated zp ZP_BYTE:48 [ startProcessing::$6 ] +Allocated zp ZP_BYTE:49 [ getCharToProcess::$13 ] +Allocated zp ZP_BYTE:50 [ getCharToProcess::$14 ] +Allocated zp ZP_WORD:51 [ getCharToProcess::$9 ] +Allocated zp ZP_WORD:53 [ getCharToProcess::$15 ] +Allocated zp ZP_WORD:55 [ getCharToProcess::$16 ] +Allocated zp ZP_WORD:57 [ getCharToProcess::$10 ] +Allocated zp ZP_WORD:59 [ getCharToProcess::$11 ] +Allocated zp ZP_WORD:61 [ mul8u::return#2 ] +Allocated zp ZP_WORD:63 [ initSquareTables::$6 ] +Allocated zp ZP_BYTE:65 [ initSquareTables::$16 ] +Allocated zp ZP_WORD:66 [ mul8u::return#3 ] +Allocated zp ZP_WORD:68 [ initSquareTables::$14 ] +Allocated zp ZP_BYTE:70 [ initSquareTables::$17 ] +Allocated zp ZP_BYTE:71 [ mul8u::$1 ] +Allocated zp ZP_BYTE:72 [ processChars::$14 ] +Allocated zp ZP_BYTE:73 [ processChars::$15 ] +Allocated zp ZP_BYTE:74 [ processChars::processing_x#0 ] +Allocated zp ZP_BYTE:75 [ processChars::processing_y#0 ] +Allocated zp ZP_WORD:76 [ processChars::$3 ] +Allocated zp ZP_WORD:78 [ processChars::$22 ] +Allocated zp ZP_WORD:80 [ processChars::$23 ] +Allocated zp ZP_WORD:82 [ processChars::$4 ] +Allocated zp ZP_WORD:84 [ processChars::$5 ] +Allocated zp ZP_WORD:86 [ processChars::$7 ] +Allocated zp ZP_WORD:88 [ processChars::$25 ] +Allocated zp ZP_WORD:90 [ processChars::$26 ] +Allocated zp ZP_WORD:92 [ processChars::$8 ] +Allocated zp ZP_WORD:94 [ processChars::$9 ] +Allocated zp ZP_BYTE:96 [ processChars::$16 ] INITIAL ASM //SEG0 File Comments @@ -2839,6 +2804,7 @@ INITIAL ASM .label SCREEN = $400 // Distance value meaning not found .const NOT_FOUND = $ffff + .const NUM_PROCESSING = $10 .const RASTER_IRQ_TOP = $30 .const RASTER_IRQ_MIDDLE = $ff //SEG3 @begin @@ -2859,17 +2825,13 @@ bend_from_b1: bend: //SEG10 main main: { - .label _5 = $25 - .label _6 = $26 - .label _7 = $27 - .label _18 = $24 + .label _14 = $22 .label i = 2 - .label sc = 3 - .label src = 5 - .label dst = 7 - .label center_x = $2c - .label center_y = $2d - .label center_dist = $2e + .label src = 3 + .label dst = 5 + .label center_x = $27 + .label center_y = $28 + .label center_dist = $29 //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: //SEG12 [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 @@ -2883,29 +2845,29 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [6] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG16 [6] (byte~) main::$14 ← (byte) main::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda i asl asl - sta _18 - //SEG17 [7] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) main::$18) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + sta _14 + //SEG17 [7] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$14) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 - ldy _18 + ldy _14 sta PROCESSING,y - //SEG18 [8] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$18) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG18 [8] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$14) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 - ldy _18 + ldy _14 sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,y - //SEG19 [9] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$18) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuz1=vwuc2 - ldy _18 + //SEG19 [9] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$14) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuz1=vwuc2 + ldy _14 lda #NOT_FOUND sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y //SEG20 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG21 [11] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #8 + //SEG21 [11] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #NUM_PROCESSING-1+1 cmp i bne b1_from_b1 //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -2917,355 +2879,313 @@ main: { jsr setupRasterIrq //SEG25 [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG26 [14] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 - lda #SCREEN - sta sc+1 - jmp b3 - // Fill screen with some chars - //SEG27 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] - b3_from_b3: - //SEG28 [14] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@3->main::@3#0] -- register_copy - jmp b3 - //SEG29 main::@3 - b3: - //SEG30 [15] (byte~) main::$5 ← < (byte*) main::sc#2 -- vbuz1=_lo_pbuz2 - lda sc - sta _5 - //SEG31 [16] (byte~) main::$6 ← (byte~) main::$5 & (byte) $1f -- vbuz1=vbuz2_band_vbuc1 - lda #$1f - and _5 - sta _6 - //SEG32 [17] (byte~) main::$7 ← (byte) 'a' + (byte~) main::$6 -- vbuz1=vbuc1_plus_vbuz2 - lax _6 - axs #-['a'] - stx _7 - //SEG33 [18] *((byte*) main::sc#2) ← (byte~) main::$7 -- _deref_pbuz1=vbuz2 - lda _7 - ldy #0 - sta (sc),y - //SEG34 [19] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 - inc sc - bne !+ - inc sc+1 - !: - //SEG35 [20] if((byte*) main::sc#1!=(const byte*) SCREEN#0+(word) $3e7+(byte) 1) goto main::@3 -- pbuz1_neq_pbuc1_then_la1 - lda sc+1 - cmp #>SCREEN+$3e7+1 - bne b3_from_b3 - lda sc - cmp #main::@4] - b4_from_b3: - //SEG37 [21] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main::@3->main::@4#0] -- pbuz1=pbuc1 + //SEG26 [14] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 lda #SCREEN_COPY sta dst+1 - //SEG38 [21] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main::@3->main::@4#1] -- pbuz1=pbuc1 + //SEG27 [14] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #SCREEN sta src+1 - jmp b4 + jmp b3 // Copy screen to screen copy - //SEG39 [21] phi from main::@4 to main::@4 [phi:main::@4->main::@4] - b4_from_b4: - //SEG40 [21] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@4->main::@4#0] -- register_copy - //SEG41 [21] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@4->main::@4#1] -- register_copy - jmp b4 - //SEG42 main::@4 - b4: - //SEG43 [22] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG28 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + b3_from_b3: + //SEG29 [14] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG30 [14] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@3->main::@3#1] -- register_copy + jmp b3 + //SEG31 main::@3 + b3: + //SEG32 [15] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y ldy #0 sta (dst),y - //SEG44 [23] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 + //SEG33 [16] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: - //SEG45 [24] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 + //SEG34 [17] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG46 [25] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e7) goto main::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG35 [18] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@3 -- pbuz1_neq_pbuc1_then_la1 lda src+1 - cmp #>SCREEN+$3e7 - bne b4_from_b4 + cmp #>SCREEN+$3e8 + bne b3_from_b3 lda src - cmp #main::@5] - b5_from_b4: - jmp b5 - //SEG48 main::@5 - b5: - //SEG49 [27] call initSquareTables - //SEG50 [86] phi from main::@5 to initSquareTables [phi:main::@5->initSquareTables] - initSquareTables_from_b5: + cmp #main::@4] + b4_from_b3: + jmp b4 + //SEG37 main::@4 + b4: + //SEG38 [20] call initSquareTables + //SEG39 [79] phi from main::@4 to initSquareTables [phi:main::@4->initSquareTables] + initSquareTables_from_b4: jsr initSquareTables - //SEG51 [28] phi from main::@5 main::@7 to main::@6 [phi:main::@5/main::@7->main::@6] - b6_from_b5: - b6_from_b7: - jmp b6 + //SEG40 [21] phi from main::@4 main::@6 to main::@5 [phi:main::@4/main::@6->main::@5] + b5_from_b4: + b5_from_b6: + jmp b5 // Main loop - //SEG52 main::@6 - b6: - //SEG53 [29] call getCenterChar - //SEG54 [58] phi from main::@6 to getCenterChar [phi:main::@6->getCenterChar] - getCenterChar_from_b6: - jsr getCenterChar - //SEG55 [30] (byte) getCenterChar::return_x#0 ← (byte) getCenterChar::return_x#1 -- vbuz1=vbuz2 - lda getCenterChar.return_x_1 - sta getCenterChar.return_x - //SEG56 [31] (byte) getCenterChar::return_y#0 ← (byte) getCenterChar::return_y#1 -- vbuz1=vbuz2 - lda getCenterChar.return_y_1 - sta getCenterChar.return_y - //SEG57 [32] (word) getCenterChar::return_dist#0 ← (word) getCenterChar::return_dist#1 -- vwuz1=vwuz2 - lda getCenterChar.return_dist_1 - sta getCenterChar.return_dist - lda getCenterChar.return_dist_1+1 - sta getCenterChar.return_dist+1 - jmp b9 - //SEG58 main::@9 - b9: - //SEG59 [33] (byte) main::center_x#0 ← (byte) getCenterChar::return_x#0 -- vbuz1=vbuz2 - lda getCenterChar.return_x + //SEG41 main::@5 + b5: + //SEG42 [22] call getCharToProcess + //SEG43 [51] phi from main::@5 to getCharToProcess [phi:main::@5->getCharToProcess] + getCharToProcess_from_b5: + jsr getCharToProcess + //SEG44 [23] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2 + lda getCharToProcess.return_x_1 + sta getCharToProcess.return_x + //SEG45 [24] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuz1=vbuz2 + lda getCharToProcess.return_y_1 + sta getCharToProcess.return_y + //SEG46 [25] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 + lda getCharToProcess.return_dist_1 + sta getCharToProcess.return_dist + lda getCharToProcess.return_dist_1+1 + sta getCharToProcess.return_dist+1 + jmp b8 + //SEG47 main::@8 + b8: + //SEG48 [26] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 -- vbuz1=vbuz2 + lda getCharToProcess.return_x sta center_x - //SEG60 [34] (byte) main::center_y#0 ← (byte) getCenterChar::return_y#0 -- vbuz1=vbuz2 - lda getCenterChar.return_y + //SEG49 [27] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 -- vbuz1=vbuz2 + lda getCharToProcess.return_y sta center_y - //SEG61 [35] (word) main::center_dist#0 ← (word) getCenterChar::return_dist#0 -- vwuz1=vwuz2 - lda getCenterChar.return_dist + //SEG50 [28] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 -- vwuz1=vwuz2 + lda getCharToProcess.return_dist sta center_dist - lda getCenterChar.return_dist+1 + lda getCharToProcess.return_dist+1 sta center_dist+1 - //SEG62 [36] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@7 -- vwuz1_neq_vwuc1_then_la1 + //SEG51 [29] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@6 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND - bne b7 + bne b6 lda center_dist cmp #startProcessing] - startProcessing_from_b7: + //SEG58 [34] call startProcessing + //SEG59 [35] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] + startProcessing_from_b6: jsr startProcessing - jmp b6_from_b7 + jmp b5_from_b6 } -//SEG71 startProcessing +//SEG60 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($30) center_x, byte zeropage($31) center_y, word zeropage($32) center_dist) +// startProcessing(byte zeropage($2b) center_x, byte zeropage($2c) center_y, word zeropage($2d) center_dist) startProcessing: { - .label _4 = $34 - .label _5 = $35 - .label center_x = $30 - .label center_y = $31 - .label center_dist = $32 - .label i = $a - .label freeIdx = $a - .label freeIdx_6 = 9 - .label freeIdx_7 = 9 - //SEG72 [43] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + .label _5 = $2f + .label _6 = $30 + .label center_x = $2b + .label center_y = $2c + .label center_dist = $2d + .label i = 8 + .label freeIdx = 8 + .label freeIdx_6 = 7 + .label freeIdx_7 = 7 + //SEG61 [36] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: - //SEG73 [43] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 + //SEG62 [36] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 lda #$ff sta freeIdx_6 jmp b1 - //SEG74 startProcessing::@1 + //SEG63 startProcessing::@1 b1: - //SEG75 [44] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG64 [37] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] b2_from_b1: - //SEG76 [44] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + //SEG65 [37] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG77 [44] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG66 [37] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] b2_from_b3: - //SEG78 [44] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG67 [37] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp b2 - //SEG79 startProcessing::@2 + //SEG68 startProcessing::@2 b2: - //SEG80 [45] (byte~) startProcessing::$4 ← (byte) startProcessing::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG69 [38] (byte~) startProcessing::$5 ← (byte) startProcessing::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda i asl asl - sta _4 - //SEG81 [46] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$4)!=(const word) NOT_FOUND#0) goto startProcessing::@3 -- pwuc1_derefidx_vbuz1_neq_vwuc2_then_la1 - ldy _4 + sta _5 + //SEG70 [39] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5)!=(const word) NOT_FOUND#0) goto startProcessing::@3 -- pwuc1_derefidx_vbuz1_neq_vwuc2_then_la1 + ldy _5 lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y cmp #>NOT_FOUND bne b3 lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y cmp #startProcessing::@4] + //SEG71 [40] phi from startProcessing::@2 startProcessing::@7 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4] b4_from_b2: b4_from_b7: - //SEG83 [47] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4#0] -- register_copy + //SEG72 [40] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4#0] -- register_copy jmp b4 - //SEG84 startProcessing::@4 + //SEG73 startProcessing::@4 b4: - //SEG85 [48] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6 -- vbuz1_eq_vbuc1_then_la1 + //SEG74 [41] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp freeIdx beq b6 jmp b5 - //SEG86 startProcessing::@5 + //SEG75 startProcessing::@5 b5: - //SEG87 [49] (byte~) startProcessing::$5 ← (byte) startProcessing::freeIdx#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG76 [42] (byte~) startProcessing::$6 ← (byte) startProcessing::freeIdx#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda freeIdx asl asl - sta _5 - //SEG88 [50] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_x#0 -- pbuc1_derefidx_vbuz1=vbuz2 + sta _6 + //SEG77 [43] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda center_x - ldy _5 + ldy _6 sta PROCESSING,y - //SEG89 [51] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$5) ← (byte) startProcessing::center_y#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG78 [44] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda center_y - ldy _5 + ldy _6 sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,y - //SEG90 [52] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5) ← (word) startProcessing::center_dist#0 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy _5 + //SEG79 [45] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist#0 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy _6 lda center_dist sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y lda center_dist+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y jmp breturn - //SEG91 startProcessing::@return + //SEG80 startProcessing::@return breturn: - //SEG92 [53] return + //SEG81 [46] return rts - //SEG93 startProcessing::@6 + //SEG82 startProcessing::@6 b6: - //SEG94 [54] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 + //SEG83 [47] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 lda freeIdx sta freeIdx_7 - //SEG95 [43] phi from startProcessing::@6 to startProcessing::@1 [phi:startProcessing::@6->startProcessing::@1] + //SEG84 [36] phi from startProcessing::@6 to startProcessing::@1 [phi:startProcessing::@6->startProcessing::@1] b1_from_b6: - //SEG96 [43] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@6->startProcessing::@1#0] -- register_copy + //SEG85 [36] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@6->startProcessing::@1#0] -- register_copy jmp b1 - //SEG97 startProcessing::@3 + //SEG86 startProcessing::@3 b3: - //SEG98 [55] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + //SEG87 [48] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG99 [56] if((byte) startProcessing::i#1!=(byte) 8) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 - lda #8 + //SEG88 [49] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + lda #NUM_PROCESSING-1+1 cmp i bne b2_from_b3 jmp b7 - //SEG100 startProcessing::@7 + //SEG89 startProcessing::@7 b7: - //SEG101 [57] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 + //SEG90 [50] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 lda freeIdx_6 sta freeIdx jmp b4_from_b7 } -//SEG102 getCenterChar +//SEG91 getCharToProcess // Find the non-space char closest to the center of the screen // If no non-space char is found the distance will be 0xffff -getCenterChar: { - .label _9 = $38 - .label _10 = $3e - .label _11 = $40 - .label _13 = $36 - .label _14 = $37 - .label return_x = $28 - .label return_y = $29 - .label return_dist = $2a - .label x = $e - .label dist = $13 - .label screen_line = $b - .label y = $d - .label return_x_1 = $11 - .label return_y_1 = $12 - .label return_dist_1 = $13 - .label closest_dist = $f - .label closest_x = $11 - .label closest_y = $12 - .label _15 = $3a - .label _16 = $3c - .label return_dist_5 = $13 - .label return_dist_6 = $13 - .label return_x_7 = $11 - .label return_y_7 = $12 - //SEG103 [59] phi from getCenterChar to getCenterChar::@1 [phi:getCenterChar->getCenterChar::@1] - b1_from_getCenterChar: - //SEG104 [59] phi (byte) getCenterChar::closest_y#9 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#0] -- vbuz1=vbuc1 +getCharToProcess: { + .label _9 = $33 + .label _10 = $39 + .label _11 = $3b + .label _13 = $31 + .label _14 = $32 + .label return_x = $23 + .label return_y = $24 + .label return_dist = $25 + .label x = $c + .label dist = $11 + .label screen_line = 9 + .label y = $b + .label return_x_1 = $f + .label return_y_1 = $10 + .label return_dist_1 = $11 + .label closest_dist = $d + .label closest_x = $f + .label closest_y = $10 + .label _15 = $35 + .label _16 = $37 + .label return_dist_5 = $11 + .label return_dist_6 = $11 + .label return_x_7 = $f + .label return_y_7 = $10 + //SEG92 [52] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + b1_from_getCharToProcess: + //SEG93 [52] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG105 [59] phi (byte) getCenterChar::closest_x#9 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#1] -- vbuz1=vbuc1 + //SEG94 [52] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG106 [59] phi (word) getCenterChar::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCenterChar->getCenterChar::@1#2] -- vwuz1=vwuc1 + //SEG95 [52] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 lda #NOT_FOUND sta closest_dist+1 - //SEG107 [59] phi (byte) getCenterChar::y#7 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#3] -- vbuz1=vbuc1 + //SEG96 [52] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG108 [59] phi (byte*) getCenterChar::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCenterChar->getCenterChar::@1#4] -- pbuz1=pbuc1 + //SEG97 [52] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 lda #SCREEN_COPY sta screen_line+1 jmp b1 - //SEG109 getCenterChar::@1 + //SEG98 getCharToProcess::@1 b1: - //SEG110 [60] phi from getCenterChar::@1 to getCenterChar::@2 [phi:getCenterChar::@1->getCenterChar::@2] + //SEG99 [53] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG111 [60] phi (byte) getCenterChar::closest_y#7 = (byte) getCenterChar::closest_y#9 [phi:getCenterChar::@1->getCenterChar::@2#0] -- register_copy - //SEG112 [60] phi (byte) getCenterChar::closest_x#7 = (byte) getCenterChar::closest_x#9 [phi:getCenterChar::@1->getCenterChar::@2#1] -- register_copy - //SEG113 [60] phi (word) getCenterChar::closest_dist#2 = (word) getCenterChar::closest_dist#8 [phi:getCenterChar::@1->getCenterChar::@2#2] -- register_copy - //SEG114 [60] phi (byte) getCenterChar::x#2 = (byte) 0 [phi:getCenterChar::@1->getCenterChar::@2#3] -- vbuz1=vbuc1 + //SEG100 [53] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG101 [53] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG102 [53] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG103 [53] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG115 getCenterChar::@2 + //SEG104 getCharToProcess::@2 b2: - //SEG116 [61] if(*((byte*) getCenterChar::screen_line#4 + (byte) getCenterChar::x#2)==(byte) ' ') goto getCenterChar::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG105 [54] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 ldy x lda (screen_line),y cmp #' ' beq b11 jmp b4 - //SEG117 getCenterChar::@4 + //SEG106 getCharToProcess::@4 b4: - //SEG118 [62] (byte~) getCenterChar::$13 ← (byte) getCenterChar::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG107 [55] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _13 - //SEG119 [63] (byte~) getCenterChar::$14 ← (byte) getCenterChar::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG108 [56] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _14 - //SEG120 [64] (word) getCenterChar::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCenterChar::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCenterChar::$14) -- vwuz1=pwuc1_derefidx_vbuz2_plus_pwuc2_derefidx_vbuz3 + //SEG109 [57] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuz2_plus_pwuc2_derefidx_vbuz3 ldx _13 ldy _14 lda SQUARES_X,x @@ -3275,7 +3195,7 @@ getCenterChar: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG121 [65] if((word) getCenterChar::dist#0>=(word) getCenterChar::closest_dist#2) goto getCenterChar::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG110 [58] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 lda closest_dist+1 cmp dist+1 bne !+ @@ -3285,34 +3205,34 @@ getCenterChar: { !: bcc b12 jmp b5 - //SEG122 getCenterChar::@5 + //SEG111 getCharToProcess::@5 b5: - //SEG123 [66] (byte~) getCenterChar::return_x#7 ← (byte) getCenterChar::x#2 -- vbuz1=vbuz2 + //SEG112 [59] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x_7 - //SEG124 [67] (byte~) getCenterChar::return_y#7 ← (byte) getCenterChar::y#7 -- vbuz1=vbuz2 + //SEG113 [60] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y_7 - //SEG125 [68] phi from getCenterChar::@11 getCenterChar::@12 getCenterChar::@5 to getCenterChar::@3 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3] + //SEG114 [61] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] b3_from_b11: b3_from_b12: b3_from_b5: - //SEG126 [68] phi (byte) getCenterChar::return_y#1 = (byte) getCenterChar::closest_y#7 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#0] -- register_copy - //SEG127 [68] phi (byte) getCenterChar::return_x#1 = (byte) getCenterChar::closest_x#7 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#1] -- register_copy - //SEG128 [68] phi (word) getCenterChar::return_dist#1 = (word~) getCenterChar::return_dist#5 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#2] -- register_copy + //SEG115 [61] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG116 [61] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG117 [61] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy jmp b3 - //SEG129 getCenterChar::@3 + //SEG118 getCharToProcess::@3 b3: - //SEG130 [69] (byte) getCenterChar::x#1 ← ++ (byte) getCenterChar::x#2 -- vbuz1=_inc_vbuz1 + //SEG119 [62] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG131 [70] if((byte) getCenterChar::x#1!=(byte) $28) goto getCenterChar::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG120 [63] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG132 getCenterChar::@6 + //SEG121 getCharToProcess::@6 b6: - //SEG133 [71] (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG122 [64] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -3320,16 +3240,16 @@ getCenterChar: { bcc !+ inc screen_line+1 !: - //SEG134 [72] (byte) getCenterChar::y#1 ← ++ (byte) getCenterChar::y#7 -- vbuz1=_inc_vbuz1 + //SEG123 [65] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG135 [73] if((byte) getCenterChar::y#1!=(byte) $19) goto getCenterChar::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG124 [66] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG136 getCenterChar::@7 + //SEG125 getCharToProcess::@7 b7: - //SEG137 [74] if((word) getCenterChar::return_dist#1==(const word) NOT_FOUND#0) goto getCenterChar::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG126 [67] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 lda return_dist_1 cmp #SCREEN_COPY sta _11+1 - //SEG144 [80] *((byte*~) getCenterChar::$11 + (byte) getCenterChar::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG133 [73] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy return_x_1 sta (_11),y jmp breturn - //SEG145 getCenterChar::@return + //SEG134 getCharToProcess::@return breturn: - //SEG146 [81] return + //SEG135 [74] return rts - //SEG147 getCenterChar::@9 + //SEG136 getCharToProcess::@9 b9: - //SEG148 [82] (word~) getCenterChar::closest_dist#10 ← (word) getCenterChar::return_dist#1 -- vwuz1=vwuz2 + //SEG137 [75] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist_1 sta closest_dist lda return_dist_1+1 sta closest_dist+1 - //SEG149 [59] phi from getCenterChar::@9 to getCenterChar::@1 [phi:getCenterChar::@9->getCenterChar::@1] + //SEG138 [52] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG150 [59] phi (byte) getCenterChar::closest_y#9 = (byte) getCenterChar::return_y#1 [phi:getCenterChar::@9->getCenterChar::@1#0] -- register_copy - //SEG151 [59] phi (byte) getCenterChar::closest_x#9 = (byte) getCenterChar::return_x#1 [phi:getCenterChar::@9->getCenterChar::@1#1] -- register_copy - //SEG152 [59] phi (word) getCenterChar::closest_dist#8 = (word~) getCenterChar::closest_dist#10 [phi:getCenterChar::@9->getCenterChar::@1#2] -- register_copy - //SEG153 [59] phi (byte) getCenterChar::y#7 = (byte) getCenterChar::y#1 [phi:getCenterChar::@9->getCenterChar::@1#3] -- register_copy - //SEG154 [59] phi (byte*) getCenterChar::screen_line#4 = (byte*) getCenterChar::screen_line#1 [phi:getCenterChar::@9->getCenterChar::@1#4] -- register_copy + //SEG139 [52] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG140 [52] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG141 [52] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG142 [52] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG143 [52] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG155 getCenterChar::@10 + //SEG144 getCharToProcess::@10 b10: - //SEG156 [83] (word~) getCenterChar::closest_dist#12 ← (word) getCenterChar::return_dist#1 -- vwuz1=vwuz2 + //SEG145 [76] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist_1 sta closest_dist lda return_dist_1+1 sta closest_dist+1 - //SEG157 [60] phi from getCenterChar::@10 to getCenterChar::@2 [phi:getCenterChar::@10->getCenterChar::@2] + //SEG146 [53] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG158 [60] phi (byte) getCenterChar::closest_y#7 = (byte) getCenterChar::return_y#1 [phi:getCenterChar::@10->getCenterChar::@2#0] -- register_copy - //SEG159 [60] phi (byte) getCenterChar::closest_x#7 = (byte) getCenterChar::return_x#1 [phi:getCenterChar::@10->getCenterChar::@2#1] -- register_copy - //SEG160 [60] phi (word) getCenterChar::closest_dist#2 = (word~) getCenterChar::closest_dist#12 [phi:getCenterChar::@10->getCenterChar::@2#2] -- register_copy - //SEG161 [60] phi (byte) getCenterChar::x#2 = (byte) getCenterChar::x#1 [phi:getCenterChar::@10->getCenterChar::@2#3] -- register_copy + //SEG147 [53] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG148 [53] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG149 [53] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG150 [53] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG162 getCenterChar::@12 + //SEG151 getCharToProcess::@12 b12: - //SEG163 [84] (word~) getCenterChar::return_dist#6 ← (word) getCenterChar::closest_dist#2 -- vwuz1=vwuz2 + //SEG152 [77] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist_6 lda closest_dist+1 sta return_dist_6+1 jmp b3_from_b12 - //SEG164 getCenterChar::@11 + //SEG153 getCharToProcess::@11 b11: - //SEG165 [85] (word~) getCenterChar::return_dist#5 ← (word) getCenterChar::closest_dist#2 -- vwuz1=vwuz2 + //SEG154 [78] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist_5 lda closest_dist+1 sta return_dist_5+1 jmp b3_from_b11 } -//SEG166 initSquareTables +//SEG155 initSquareTables // initialize SQUARES table initSquareTables: { - .label _2 = $16 - .label _4 = $16 - .label _6 = $44 - .label _10 = $18 - .label _12 = $18 - .label _14 = $49 - .label _16 = $46 - .label _17 = $4b - .label x_dist = $16 - .label x = $15 - .label y_dist = $18 - .label y = $17 - //SEG167 [87] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + .label _2 = $14 + .label _4 = $14 + .label _6 = $3f + .label _10 = $16 + .label _12 = $16 + .label _14 = $44 + .label _16 = $41 + .label _17 = $46 + .label x_dist = $14 + .label x = $13 + .label y_dist = $16 + .label y = $15 + //SEG156 [80] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG168 [87] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG157 [80] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG169 [87] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG158 [80] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG170 [87] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG159 [80] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG171 initSquareTables::@1 + //SEG160 initSquareTables::@1 b1: - //SEG172 [88] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG161 [81] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG173 initSquareTables::@3 + //SEG162 initSquareTables::@3 b3: - //SEG174 [89] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 + //SEG163 [82] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1 lax x axs #$14 stx _2 - //SEG175 [90] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG164 [83] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG176 [90] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG165 [83] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG177 initSquareTables::@4 + //SEG166 initSquareTables::@4 b4: - //SEG178 [91] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG167 [84] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.a - //SEG179 [92] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 + //SEG168 [85] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2 lda x_dist sta mul8u.b - //SEG180 [93] call mul8u - //SEG181 [116] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG169 [86] call mul8u + //SEG170 [109] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG182 [116] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG183 [116] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2 + //SEG171 [109] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG172 [109] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG184 [94] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG173 [87] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b9 - //SEG185 initSquareTables::@9 + //SEG174 initSquareTables::@9 b9: - //SEG186 [95] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG175 [88] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta _6 lda mul8u.return+1 sta _6+1 - //SEG187 [96] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG176 [89] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _16 - //SEG188 [97] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG177 [90] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuz1=vwuz2 ldy _16 lda _6 sta SQUARES_X,y lda _6+1 sta SQUARES_X+1,y - //SEG189 [98] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG178 [91] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG190 [99] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG179 [92] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG191 [100] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG180 [93] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG192 [100] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG181 [93] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG193 [100] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG182 [93] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG194 [100] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG183 [93] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG195 initSquareTables::@5 + //SEG184 initSquareTables::@5 b5: - //SEG196 [101] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG185 [94] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG197 initSquareTables::@7 + //SEG186 initSquareTables::@7 b7: - //SEG198 [102] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 + //SEG187 [95] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1 lax y axs #$c stx _10 - //SEG199 [103] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG188 [96] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG200 [103] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG189 [96] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG201 initSquareTables::@8 + //SEG190 initSquareTables::@8 b8: - //SEG202 [104] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG191 [97] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.a - //SEG203 [105] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 + //SEG192 [98] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2 lda y_dist sta mul8u.b_1 - //SEG204 [106] call mul8u - //SEG205 [116] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG193 [99] call mul8u + //SEG194 [109] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG206 [116] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG207 [116] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2 + //SEG195 [109] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG196 [109] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b_1 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG208 [107] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG197 [100] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return_3 lda mul8u.res+1 sta mul8u.return_3+1 jmp b10 - //SEG209 initSquareTables::@10 + //SEG198 initSquareTables::@10 b10: - //SEG210 [108] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG199 [101] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta _14 lda mul8u.return_3+1 sta _14+1 - //SEG211 [109] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG200 [102] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta _17 - //SEG212 [110] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG201 [103] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuz1=vwuz2 ldy _17 lda _14 sta SQUARES_Y,y lda _14+1 sta SQUARES_Y+1,y - //SEG213 [111] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG202 [104] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG214 [112] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG203 [105] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5_from_b10 jmp breturn - //SEG215 initSquareTables::@return + //SEG204 initSquareTables::@return breturn: - //SEG216 [113] return + //SEG205 [106] return rts - //SEG217 initSquareTables::@6 + //SEG206 initSquareTables::@6 b6: - //SEG218 [114] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG207 [107] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$c sec sbc y sta _12 jmp b8_from_b6 - //SEG219 initSquareTables::@2 + //SEG208 initSquareTables::@2 b2: - //SEG220 [115] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG209 [108] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$14 sec sbc x sta _4 jmp b4_from_b2 } -//SEG221 mul8u +//SEG210 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word -// mul8u(byte zeropage($1b) a, byte zeropage($1a) b) +// mul8u(byte zeropage($19) a, byte zeropage($18) b) mul8u: { - .label _1 = $4c - .label mb = $1e - .label a = $1b - .label res = $1c - .label b = $1a - .label return = $42 - .label b_1 = $19 - .label return_3 = $47 - //SEG222 [117] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + .label _1 = $47 + .label mb = $1c + .label a = $19 + .label res = $1a + .label b = $18 + .label return = $3d + .label b_1 = $17 + .label return_3 = $42 + //SEG211 [110] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG223 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG224 [117] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG212 [110] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG213 [110] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG225 [117] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG214 [110] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG226 mul8u::@1 + //SEG215 mul8u::@1 b1: - //SEG227 [118] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG216 [111] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG228 mul8u::@return + //SEG217 mul8u::@return breturn: - //SEG229 [119] return + //SEG218 [112] return rts - //SEG230 mul8u::@2 + //SEG219 mul8u::@2 b2: - //SEG231 [120] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG220 [113] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG232 [121] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 + //SEG221 [114] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG233 mul8u::@4 + //SEG222 mul8u::@4 b4: - //SEG234 [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG223 [115] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -3678,138 +3598,138 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG235 [123] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG224 [116] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG236 [123] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG225 [116] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG237 mul8u::@3 + //SEG226 mul8u::@3 b3: - //SEG238 [124] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + //SEG227 [117] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG239 [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG228 [118] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG240 [117] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG229 [110] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG241 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG242 [117] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG243 [117] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG230 [110] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG231 [110] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG232 [110] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG244 setupRasterIrq +//SEG233 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG245 asm { sei } + //SEG234 asm { sei } sei - //SEG246 [127] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG235 [120] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG247 [128] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG236 [121] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG248 [129] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG237 [122] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT jmp b1 - //SEG249 setupRasterIrq::@1 + //SEG238 setupRasterIrq::@1 b1: - //SEG250 [130] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG239 [123] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL jmp b2 - //SEG251 setupRasterIrq::@2 + //SEG240 setupRasterIrq::@2 b2: - //SEG252 [131] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG241 [124] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG253 [132] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG242 [125] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG254 [133] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG243 [126] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG255 asm { cli } + //SEG244 asm { cli } cli jmp breturn - //SEG256 setupRasterIrq::@return + //SEG245 setupRasterIrq::@return breturn: - //SEG257 [135] return + //SEG246 [128] return rts } -//SEG258 irqBottom +//SEG247 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - .label i = $20 - //SEG259 entry interrupt(HARDWARE_ALL) + .label i = $1e + //SEG248 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG260 [137] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG249 [130] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG261 [137] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 + //SEG250 [130] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG262 [137] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG251 [130] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] b1_from_b1: - //SEG263 [137] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG252 [130] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy jmp b1 - //SEG264 irqBottom::@1 + //SEG253 irqBottom::@1 b1: - //SEG265 [138] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 + //SEG254 [131] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG266 [139] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG255 [132] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp i bne b1_from_b1 jmp b2 - //SEG267 irqBottom::@2 + //SEG256 irqBottom::@2 b2: - //SEG268 [140] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG257 [133] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG269 [141] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG258 [134] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG270 [142] call processChars - //SEG271 [149] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG259 [135] call processChars + //SEG260 [142] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] processChars_from_b2: jsr processChars jmp b3 - //SEG272 irqBottom::@3 + //SEG261 irqBottom::@3 b3: - //SEG273 [143] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG262 [136] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG274 [144] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG263 [137] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG275 [145] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG264 [138] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG276 [146] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG265 [139] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG277 [147] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG266 [140] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG278 irqBottom::@return + //SEG267 irqBottom::@return breturn: - //SEG279 [148] return - exit interrupt(HARDWARE_ALL) + //SEG268 [141] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -3818,44 +3738,44 @@ irqBottom: { ldy #00 rti } -//SEG280 processChars +//SEG269 processChars // Process any chars in the PROCESSING array processChars: { - .label _2 = $51 - .label _3 = $57 - .label _4 = $59 - .label _6 = $5b - .label _7 = $61 - .label _8 = $63 - .label _13 = $4d - .label _14 = $4e - .label _15 = $65 - .label i = $21 - .label processing_x = $4f - .label processing_y = $50 - .label _21 = $53 - .label _22 = $55 - .label _24 = $5d - .label _25 = $5f - //SEG281 [150] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label _3 = $4c + .label _4 = $52 + .label _5 = $54 + .label _7 = $56 + .label _8 = $5c + .label _9 = $5e + .label _14 = $48 + .label _15 = $49 + .label _16 = $60 + .label i = $1f + .label processing_x = $4a + .label processing_y = $4b + .label _22 = $4e + .label _23 = $50 + .label _25 = $58 + .label _26 = $5a + //SEG270 [143] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG282 [150] phi (byte) processChars::i#2 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 + //SEG271 [143] phi (byte) processChars::i#2 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG283 [150] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG272 [143] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG284 [150] phi (byte) processChars::i#2 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG273 [143] phi (byte) processChars::i#2 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy jmp b1 - //SEG285 processChars::@1 + //SEG274 processChars::@1 b1: - //SEG286 [151] (byte~) processChars::$13 ← (byte) processChars::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG275 [144] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda i asl asl - sta _13 - //SEG287 [152] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$13)==(const word) NOT_FOUND#0) goto processChars::@2 -- pwuc1_derefidx_vbuz1_eq_vwuc2_then_la1 - ldy _13 + sta _14 + //SEG276 [145] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$14)==(const word) NOT_FOUND#0) goto processChars::@2 -- pwuc1_derefidx_vbuz1_eq_vwuc2_then_la1 + ldy _14 lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y cmp #COLS - sta _4+1 - //SEG297 [161] *((byte*~) processChars::$4 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 -- pbuz1_derefidx_vbuz2=vbuc1 + sta _5+1 + //SEG286 [154] *((byte*~) processChars::$5 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 -- pbuz1_derefidx_vbuz2=vbuc1 lda #WHITE ldy processing_x - sta (_4),y - //SEG298 [162] (word~) processChars::$6 ← (word)(byte) processChars::processing_y#0 -- vwuz1=_word_vbuz2 + sta (_5),y + //SEG287 [155] (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0 -- vwuz1=_word_vbuz2 lda processing_y - sta _6 - lda #0 - sta _6+1 - //SEG299 [163] (word) processChars::$24 ← (word~) processChars::$6 << (byte) 2 -- vwuz1=vwuz2_rol_2 - lda _6 - asl - sta _24 - lda _6+1 - rol - sta _24+1 - asl _24 - rol _24+1 - //SEG300 [164] (word) processChars::$25 ← (word) processChars::$24 + (word~) processChars::$6 -- vwuz1=vwuz2_plus_vwuz3 - lda _24 - clc - adc _6 - sta _25 - lda _24+1 - adc _6+1 - sta _25+1 - //SEG301 [165] (word~) processChars::$7 ← (word) processChars::$25 << (byte) 3 -- vwuz1=vwuz2_rol_3 - lda _25 - asl sta _7 - lda _25+1 - rol + lda #0 sta _7+1 - asl _7 - rol _7+1 - asl _7 - rol _7+1 - //SEG302 [166] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (word~) processChars::$7 -- pbuz1=pbuc1_plus_vwuz2 + //SEG288 [156] (word) processChars::$25 ← (word~) processChars::$7 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _7 + asl + sta _25 + lda _7+1 + rol + sta _25+1 + asl _25 + rol _25+1 + //SEG289 [157] (word) processChars::$26 ← (word) processChars::$25 + (word~) processChars::$7 -- vwuz1=vwuz2_plus_vwuz3 + lda _25 + clc + adc _7 + sta _26 + lda _25+1 + adc _7+1 + sta _26+1 + //SEG290 [158] (word~) processChars::$8 ← (word) processChars::$26 << (byte) 3 -- vwuz1=vwuz2_rol_3 + lda _26 + asl + sta _8 + lda _26+1 + rol + sta _8+1 + asl _8 + rol _8+1 + asl _8 + rol _8+1 + //SEG291 [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (word~) processChars::$8 -- pbuz1=pbuc1_plus_vwuz2 + lda _8 clc adc #SCREEN - sta _8+1 - //SEG303 [167] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + sta _9+1 + //SEG292 [160] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 ldy processing_x - lda (_8),y + lda (_9),y cmp #' ' beq b3 jmp b6 - //SEG304 processChars::@6 + //SEG293 processChars::@6 b6: - //SEG305 [168] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 -- pbuz1_derefidx_vbuz2_gt_vbuc1_then_la1 + //SEG294 [161] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 -- pbuz1_derefidx_vbuz2_gt_vbuc1_then_la1 ldy processing_x - lda (_8),y + lda (_9),y cmp #' ' beq !+ bcs b4 !: jmp b7 - //SEG306 processChars::@7 + //SEG295 processChars::@7 b7: - //SEG307 [169] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2 + //SEG296 [162] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2 ldy processing_x - lda (_8),y + lda (_9),y clc adc #1 - sta (_8),y + sta (_9),y jmp b2 - //SEG308 processChars::@2 + //SEG297 processChars::@2 b2: - //SEG309 [170] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 -- vbuz1=_inc_vbuz1 + //SEG298 [163] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG310 [171] if((byte) processChars::i#1!=(byte) 8) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #8 + //SEG299 [164] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #NUM_PROCESSING-1+1 cmp i bne b1_from_b2 jmp breturn - //SEG311 processChars::@return + //SEG300 processChars::@return breturn: - //SEG312 [172] return + //SEG301 [165] return rts - //SEG313 processChars::@4 + //SEG302 processChars::@4 b4: - //SEG314 [173] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz2 + //SEG303 [166] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz2 ldy processing_x - lda (_8),y + lda (_9),y sec sbc #1 - sta (_8),y + sta (_9),y jmp b2 - //SEG315 processChars::@3 + //SEG304 processChars::@3 b3: - //SEG316 [174] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + //SEG305 [167] (byte~) processChars::$16 ← (byte) processChars::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda i asl asl - sta _15 - //SEG317 [175] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$15) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuz1=vwuc2 - ldy _15 + sta _16 + //SEG306 [168] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$16) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuz1=vwuc2 + ldy _16 lda #NOT_FOUND sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y jmp b2 } -//SEG318 irqTop +//SEG307 irqTop // Raster Interrupt at the top of the screen irqTop: { - .label i = $22 - .label i1 = $23 - //SEG319 entry interrupt(HARDWARE_ALL) + .label i = $20 + .label i1 = $21 + //SEG308 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG320 [177] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG309 [170] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] b1_from_irqTop: - //SEG321 [177] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 + //SEG310 [170] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG322 [177] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG311 [170] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] b1_from_b1: - //SEG323 [177] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG312 [170] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy jmp b1 - //SEG324 irqTop::@1 + //SEG313 irqTop::@1 b1: - //SEG325 [178] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 + //SEG314 [171] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG326 [179] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [172] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1 lda #5 cmp i bne b1_from_b1 jmp b2 - //SEG327 irqTop::@2 + //SEG316 irqTop::@2 b2: - //SEG328 [180] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG317 [173] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG329 [181] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG318 [174] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG330 [182] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] + //SEG319 [175] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] b3_from_b2: - //SEG331 [182] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuz1=vbuc1 + //SEG320 [175] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuz1=vbuc1 lda #0 sta i1 jmp b3 - //SEG332 [182] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] + //SEG321 [175] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] b3_from_b3: - //SEG333 [182] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy + //SEG322 [175] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy jmp b3 - //SEG334 irqTop::@3 + //SEG323 irqTop::@3 b3: - //SEG335 [183] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 + //SEG324 [176] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG336 [184] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG325 [177] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i1 bne b3_from_b3 jmp b4 - //SEG337 irqTop::@4 + //SEG326 irqTop::@4 b4: - //SEG338 [185] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG327 [178] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG339 [186] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG328 [179] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG340 [187] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG329 [180] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the middle of the screen lda #RASTER_IRQ_MIDDLE sta RASTER - //SEG341 [188] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG330 [181] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG342 [189] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG331 [182] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG343 irqTop::@return + //SEG332 irqTop::@return breturn: - //SEG344 [190] return - exit interrupt(HARDWARE_ALL) + //SEG333 [183] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -4117,399 +4037,383 @@ irqTop: { } // Copy of the screen used for finding chars to process SCREEN_COPY: .fill $3e8, 0 - // Chars currently being processed in the interrupt - PROCESSING: .fill 4*8, 0 // SQUARES_X[i] = (i-20)*(i-20) SQUARES_X: .fill 2*$28, 0 // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 + // Chars currently being processed in the interrupt + PROCESSING: .fill 4*NUM_PROCESSING, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$18 ] ( main:2 [ main::i#2 main::$18 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$14 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [7] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) main::$18) ← (byte) 0 [ main::i#2 main::$18 ] ( main:2 [ main::i#2 main::$18 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ main::$18 ] -Statement [8] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$18) ← (byte) 0 [ main::i#2 main::$18 ] ( main:2 [ main::i#2 main::$18 ] ) always clobbers reg byte a -Statement [9] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$18) ← (const word) NOT_FOUND#0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [18] *((byte*) main::sc#2) ← (byte~) main::$7 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte y -Statement [20] if((byte*) main::sc#1!=(const byte*) SCREEN#0+(word) $3e7+(byte) 1) goto main::@3 [ main::sc#1 ] ( main:2 [ main::sc#1 ] ) always clobbers reg byte a -Statement [22] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:2 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [25] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e7) goto main::@4 [ main::src#1 main::dst#1 ] ( main:2 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a -Statement [32] (word) getCenterChar::return_dist#0 ← (word) getCenterChar::return_dist#1 [ getCenterChar::return_x#0 getCenterChar::return_y#0 getCenterChar::return_dist#0 ] ( main:2 [ getCenterChar::return_x#0 getCenterChar::return_y#0 getCenterChar::return_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ getCenterChar::return_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ getCenterChar::return_y#0 ] -Statement [35] (word) main::center_dist#0 ← (word) getCenterChar::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ main::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ main::center_y#0 ] -Statement [36] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@7 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Statement [40] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 ] ( main:2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ startProcessing::center_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ startProcessing::center_y#0 ] -Statement [45] (byte~) startProcessing::$4 ← (byte) startProcessing::i#2 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$4 ] ( main:2::startProcessing:41 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$4 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Statement [46] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$4)!=(const word) NOT_FOUND#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:41 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [49] (byte~) startProcessing::$5 ← (byte) startProcessing::freeIdx#2 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$5 ] ( main:2::startProcessing:41 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [50] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$5 ] ( main:2::startProcessing:41 [ startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$5 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ startProcessing::$5 ] -Statement [51] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$5) ← (byte) startProcessing::center_y#0 [ startProcessing::center_dist#0 startProcessing::$5 ] ( main:2::startProcessing:41 [ startProcessing::center_dist#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [52] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5) ← (word) startProcessing::center_dist#0 [ ] ( main:2::startProcessing:41 [ ] ) always clobbers reg byte a -Statement [61] if(*((byte*) getCenterChar::screen_line#4 + (byte) getCenterChar::x#2)==(byte) ' ') goto getCenterChar::@11 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ getCenterChar::y#7 getCenterChar::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ getCenterChar::x#2 getCenterChar::x#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -Statement [62] (byte~) getCenterChar::$13 ← (byte) getCenterChar::x#2 << (byte) 1 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::$13 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::$13 ] ) always clobbers reg byte a -Statement [63] (byte~) getCenterChar::$14 ← (byte) getCenterChar::y#7 << (byte) 1 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::$13 getCenterChar::$14 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::$13 getCenterChar::$14 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ getCenterChar::$13 ] -Statement [64] (word) getCenterChar::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCenterChar::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCenterChar::$14) [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::dist#0 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::dist#0 ] ) always clobbers reg byte a -Statement [65] if((word) getCenterChar::dist#0>=(word) getCenterChar::closest_dist#2) goto getCenterChar::@12 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::dist#0 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::dist#0 ] ) always clobbers reg byte a -Statement [71] (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#4 + (byte) $28 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::y#7 getCenterChar::screen_line#1 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::y#7 getCenterChar::screen_line#1 ] ) always clobbers reg byte a -Statement [74] if((word) getCenterChar::return_dist#1==(const word) NOT_FOUND#0) goto getCenterChar::@return [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 ] ) always clobbers reg byte a -Statement [75] (word~) getCenterChar::$9 ← (word)(byte) getCenterChar::return_y#1 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$9 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$9 ] ) always clobbers reg byte a -Statement [76] (word) getCenterChar::$15 ← (word~) getCenterChar::$9 << (byte) 2 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$9 getCenterChar::$15 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$9 getCenterChar::$15 ] ) always clobbers reg byte a -Statement [77] (word) getCenterChar::$16 ← (word) getCenterChar::$15 + (word~) getCenterChar::$9 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$16 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$16 ] ) always clobbers reg byte a -Statement [78] (word~) getCenterChar::$10 ← (word) getCenterChar::$16 << (byte) 3 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$10 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$10 ] ) always clobbers reg byte a -Statement [79] (byte*~) getCenterChar::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCenterChar::$10 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$11 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$11 ] ) always clobbers reg byte a -Statement [80] *((byte*~) getCenterChar::$11 + (byte) getCenterChar::return_x#1) ← (byte) ' ' [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 ] ) always clobbers reg byte a -Statement [82] (word~) getCenterChar::closest_dist#10 ← (word) getCenterChar::return_dist#1 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::screen_line#1 getCenterChar::y#1 getCenterChar::closest_dist#10 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::screen_line#1 getCenterChar::y#1 getCenterChar::closest_dist#10 ] ) always clobbers reg byte a -Statement [83] (word~) getCenterChar::closest_dist#12 ← (word) getCenterChar::return_dist#1 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#1 getCenterChar::closest_dist#12 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#1 getCenterChar::closest_dist#12 ] ) always clobbers reg byte a -Statement [84] (word~) getCenterChar::return_dist#6 ← (word) getCenterChar::closest_dist#2 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::return_dist#6 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::return_dist#6 ] ) always clobbers reg byte a -Statement [85] (word~) getCenterChar::return_dist#5 ← (word) getCenterChar::closest_dist#2 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::return_dist#5 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::return_dist#5 ] ) always clobbers reg byte a -Statement [94] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ initSquareTables::x#2 initSquareTables::x#1 ] -Statement [95] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [96] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [97] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [107] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ initSquareTables::y#2 initSquareTables::y#1 ] -Statement [108] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [109] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [110] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [114] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -Statement [115] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a -Statement [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:27::mul8u:93 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:27::mul8u:106 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [127] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [128] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [129] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [130] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [131] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [132] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [133] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [140] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [141] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [143] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [144] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [145] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [146] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [147] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [148] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [151] (byte~) processChars::$13 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$13 ] ( processChars:142 [ processChars::i#2 processChars::$13 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ processChars::i#2 processChars::i#1 ] -Statement [152] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$13)==(const word) NOT_FOUND#0) goto processChars::@2 [ processChars::i#2 ] ( processChars:142 [ processChars::i#2 ] ) always clobbers reg byte a -Statement [153] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$14 ] ( processChars:142 [ processChars::i#2 processChars::$14 ] ) always clobbers reg byte a -Statement [156] (word~) processChars::$2 ← (word)(byte) processChars::processing_y#0 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$2 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ processChars::processing_x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:80 [ processChars::processing_y#0 ] -Statement [157] (word) processChars::$21 ← (word~) processChars::$2 << (byte) 2 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$2 processChars::$21 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$2 processChars::$21 ] ) always clobbers reg byte a -Statement [158] (word) processChars::$22 ← (word) processChars::$21 + (word~) processChars::$2 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$22 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$22 ] ) always clobbers reg byte a -Statement [159] (word~) processChars::$3 ← (word) processChars::$22 << (byte) 3 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 ] ) always clobbers reg byte a -Statement [160] (byte*~) processChars::$4 ← (const byte*) COLS#0 + (word~) processChars::$3 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$4 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$4 ] ) always clobbers reg byte a -Statement [161] *((byte*~) processChars::$4 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 ] ) always clobbers reg byte a -Statement [162] (word~) processChars::$6 ← (word)(byte) processChars::processing_y#0 [ processChars::i#2 processChars::processing_x#0 processChars::$6 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$6 ] ) always clobbers reg byte a -Statement [163] (word) processChars::$24 ← (word~) processChars::$6 << (byte) 2 [ processChars::i#2 processChars::processing_x#0 processChars::$6 processChars::$24 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$6 processChars::$24 ] ) always clobbers reg byte a -Statement [164] (word) processChars::$25 ← (word) processChars::$24 + (word~) processChars::$6 [ processChars::i#2 processChars::processing_x#0 processChars::$25 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$25 ] ) always clobbers reg byte a -Statement [165] (word~) processChars::$7 ← (word) processChars::$25 << (byte) 3 [ processChars::i#2 processChars::processing_x#0 processChars::$7 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$7 ] ) always clobbers reg byte a -Statement [166] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (word~) processChars::$7 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ) always clobbers reg byte a -Statement [167] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ) always clobbers reg byte a -Statement [168] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ) always clobbers reg byte a -Statement [169] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) [ processChars::i#2 ] ( processChars:142 [ processChars::i#2 ] ) always clobbers reg byte a -Statement [173] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) [ processChars::i#2 ] ( processChars:142 [ processChars::i#2 ] ) always clobbers reg byte a -Statement [174] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$15 ] ( processChars:142 [ processChars::i#2 processChars::$15 ] ) always clobbers reg byte a -Statement [175] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$15) ← (const word) NOT_FOUND#0 [ processChars::i#2 ] ( processChars:142 [ processChars::i#2 ] ) always clobbers reg byte a -Statement [180] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [181] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [185] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [186] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [187] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [188] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [189] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [190] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [6] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$18 ] ( main:2 [ main::i#2 main::$18 ] ) always clobbers reg byte a -Statement [7] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) main::$18) ← (byte) 0 [ main::i#2 main::$18 ] ( main:2 [ main::i#2 main::$18 ] ) always clobbers reg byte a -Statement [8] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$18) ← (byte) 0 [ main::i#2 main::$18 ] ( main:2 [ main::i#2 main::$18 ] ) always clobbers reg byte a -Statement [9] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$18) ← (const word) NOT_FOUND#0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [18] *((byte*) main::sc#2) ← (byte~) main::$7 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte y -Statement [20] if((byte*) main::sc#1!=(const byte*) SCREEN#0+(word) $3e7+(byte) 1) goto main::@3 [ main::sc#1 ] ( main:2 [ main::sc#1 ] ) always clobbers reg byte a -Statement [22] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:2 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [25] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e7) goto main::@4 [ main::src#1 main::dst#1 ] ( main:2 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a -Statement [32] (word) getCenterChar::return_dist#0 ← (word) getCenterChar::return_dist#1 [ getCenterChar::return_x#0 getCenterChar::return_y#0 getCenterChar::return_dist#0 ] ( main:2 [ getCenterChar::return_x#0 getCenterChar::return_y#0 getCenterChar::return_dist#0 ] ) always clobbers reg byte a -Statement [35] (word) main::center_dist#0 ← (word) getCenterChar::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Statement [36] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@7 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a -Statement [40] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 ] ( main:2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 ] ) always clobbers reg byte a -Statement [45] (byte~) startProcessing::$4 ← (byte) startProcessing::i#2 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$4 ] ( main:2::startProcessing:41 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$4 ] ) always clobbers reg byte a -Statement [46] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$4)!=(const word) NOT_FOUND#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:41 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [49] (byte~) startProcessing::$5 ← (byte) startProcessing::freeIdx#2 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$5 ] ( main:2::startProcessing:41 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [50] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$5 ] ( main:2::startProcessing:41 [ startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [51] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$5) ← (byte) startProcessing::center_y#0 [ startProcessing::center_dist#0 startProcessing::$5 ] ( main:2::startProcessing:41 [ startProcessing::center_dist#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [52] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5) ← (word) startProcessing::center_dist#0 [ ] ( main:2::startProcessing:41 [ ] ) always clobbers reg byte a -Statement [61] if(*((byte*) getCenterChar::screen_line#4 + (byte) getCenterChar::x#2)==(byte) ' ') goto getCenterChar::@11 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 ] ) always clobbers reg byte a -Statement [62] (byte~) getCenterChar::$13 ← (byte) getCenterChar::x#2 << (byte) 1 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::$13 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::$13 ] ) always clobbers reg byte a -Statement [63] (byte~) getCenterChar::$14 ← (byte) getCenterChar::y#7 << (byte) 1 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::$13 getCenterChar::$14 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::$13 getCenterChar::$14 ] ) always clobbers reg byte a -Statement [64] (word) getCenterChar::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCenterChar::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCenterChar::$14) [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::dist#0 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::dist#0 ] ) always clobbers reg byte a -Statement [65] if((word) getCenterChar::dist#0>=(word) getCenterChar::closest_dist#2) goto getCenterChar::@12 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::dist#0 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_dist#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::dist#0 ] ) always clobbers reg byte a -Statement [71] (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#4 + (byte) $28 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::y#7 getCenterChar::screen_line#1 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::y#7 getCenterChar::screen_line#1 ] ) always clobbers reg byte a -Statement [74] if((word) getCenterChar::return_dist#1==(const word) NOT_FOUND#0) goto getCenterChar::@return [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 ] ) always clobbers reg byte a -Statement [75] (word~) getCenterChar::$9 ← (word)(byte) getCenterChar::return_y#1 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$9 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$9 ] ) always clobbers reg byte a -Statement [76] (word) getCenterChar::$15 ← (word~) getCenterChar::$9 << (byte) 2 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$9 getCenterChar::$15 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$9 getCenterChar::$15 ] ) always clobbers reg byte a -Statement [77] (word) getCenterChar::$16 ← (word) getCenterChar::$15 + (word~) getCenterChar::$9 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$16 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$16 ] ) always clobbers reg byte a -Statement [78] (word~) getCenterChar::$10 ← (word) getCenterChar::$16 << (byte) 3 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$10 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$10 ] ) always clobbers reg byte a -Statement [79] (byte*~) getCenterChar::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCenterChar::$10 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$11 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 getCenterChar::$11 ] ) always clobbers reg byte a -Statement [80] *((byte*~) getCenterChar::$11 + (byte) getCenterChar::return_x#1) ← (byte) ' ' [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::return_dist#1 ] ) always clobbers reg byte a -Statement [82] (word~) getCenterChar::closest_dist#10 ← (word) getCenterChar::return_dist#1 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::screen_line#1 getCenterChar::y#1 getCenterChar::closest_dist#10 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::screen_line#1 getCenterChar::y#1 getCenterChar::closest_dist#10 ] ) always clobbers reg byte a -Statement [83] (word~) getCenterChar::closest_dist#12 ← (word) getCenterChar::return_dist#1 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#1 getCenterChar::closest_dist#12 ] ( main:2::getCenterChar:29 [ getCenterChar::return_x#1 getCenterChar::return_y#1 getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#1 getCenterChar::closest_dist#12 ] ) always clobbers reg byte a -Statement [84] (word~) getCenterChar::return_dist#6 ← (word) getCenterChar::closest_dist#2 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::return_dist#6 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::return_dist#6 ] ) always clobbers reg byte a -Statement [85] (word~) getCenterChar::return_dist#5 ← (word) getCenterChar::closest_dist#2 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::return_dist#5 ] ( main:2::getCenterChar:29 [ getCenterChar::screen_line#4 getCenterChar::y#7 getCenterChar::x#2 getCenterChar::closest_x#7 getCenterChar::closest_y#7 getCenterChar::return_dist#5 ] ) always clobbers reg byte a -Statement [89] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a -Statement [94] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a -Statement [95] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a -Statement [96] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a -Statement [97] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 ] ) always clobbers reg byte a -Statement [102] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a -Statement [107] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a -Statement [108] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a -Statement [109] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a -Statement [110] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 ] ) always clobbers reg byte a -Statement [114] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:27 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a -Statement [115] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:27 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a -Statement [120] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::initSquareTables:27::mul8u:93 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::initSquareTables:27::mul8u:106 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:27::mul8u:93 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:27::mul8u:106 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [127] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [128] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [129] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [130] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [131] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [132] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [133] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a -Statement [140] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [141] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [143] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [144] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [145] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [146] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [147] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [148] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [151] (byte~) processChars::$13 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$13 ] ( processChars:142 [ processChars::i#2 processChars::$13 ] ) always clobbers reg byte a -Statement [152] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$13)==(const word) NOT_FOUND#0) goto processChars::@2 [ processChars::i#2 ] ( processChars:142 [ processChars::i#2 ] ) always clobbers reg byte a -Statement [153] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$14 ] ( processChars:142 [ processChars::i#2 processChars::$14 ] ) always clobbers reg byte a -Statement [156] (word~) processChars::$2 ← (word)(byte) processChars::processing_y#0 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$2 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$2 ] ) always clobbers reg byte a -Statement [157] (word) processChars::$21 ← (word~) processChars::$2 << (byte) 2 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$2 processChars::$21 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$2 processChars::$21 ] ) always clobbers reg byte a -Statement [158] (word) processChars::$22 ← (word) processChars::$21 + (word~) processChars::$2 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$22 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$22 ] ) always clobbers reg byte a -Statement [159] (word~) processChars::$3 ← (word) processChars::$22 << (byte) 3 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 ] ) always clobbers reg byte a -Statement [160] (byte*~) processChars::$4 ← (const byte*) COLS#0 + (word~) processChars::$3 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$4 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$4 ] ) always clobbers reg byte a -Statement [161] *((byte*~) processChars::$4 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 ] ) always clobbers reg byte a -Statement [162] (word~) processChars::$6 ← (word)(byte) processChars::processing_y#0 [ processChars::i#2 processChars::processing_x#0 processChars::$6 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$6 ] ) always clobbers reg byte a -Statement [163] (word) processChars::$24 ← (word~) processChars::$6 << (byte) 2 [ processChars::i#2 processChars::processing_x#0 processChars::$6 processChars::$24 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$6 processChars::$24 ] ) always clobbers reg byte a -Statement [164] (word) processChars::$25 ← (word) processChars::$24 + (word~) processChars::$6 [ processChars::i#2 processChars::processing_x#0 processChars::$25 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$25 ] ) always clobbers reg byte a -Statement [165] (word~) processChars::$7 ← (word) processChars::$25 << (byte) 3 [ processChars::i#2 processChars::processing_x#0 processChars::$7 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$7 ] ) always clobbers reg byte a -Statement [166] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (word~) processChars::$7 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ) always clobbers reg byte a -Statement [167] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ) always clobbers reg byte a -Statement [168] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ( processChars:142 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ) always clobbers reg byte a -Statement [169] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) [ processChars::i#2 ] ( processChars:142 [ processChars::i#2 ] ) always clobbers reg byte a -Statement [173] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) [ processChars::i#2 ] ( processChars:142 [ processChars::i#2 ] ) always clobbers reg byte a -Statement [174] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$15 ] ( processChars:142 [ processChars::i#2 processChars::$15 ] ) always clobbers reg byte a -Statement [175] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$15) ← (const word) NOT_FOUND#0 [ processChars::i#2 ] ( processChars:142 [ processChars::i#2 ] ) always clobbers reg byte a -Statement [180] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [181] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [185] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [186] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [187] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [188] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [189] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [190] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [7] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$14) ← (byte) 0 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ main::$14 ] +Statement [8] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$14) ← (byte) 0 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] ) always clobbers reg byte a +Statement [9] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$14) ← (const word) NOT_FOUND#0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [15] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:2 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [18] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@3 [ main::src#1 main::dst#1 ] ( main:2 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a +Statement [25] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:2 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ getCharToProcess::return_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ getCharToProcess::return_y#0 ] +Statement [28] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ main::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ main::center_y#0 ] +Statement [29] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@6 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a +Statement [33] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 ] ( main:2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ startProcessing::center_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ startProcessing::center_y#0 ] +Statement [38] (byte~) startProcessing::$5 ← (byte) startProcessing::i#2 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$5 ] ( main:2::startProcessing:34 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$5 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] +Statement [39] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5)!=(const word) NOT_FOUND#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:34 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a +Statement [42] (byte~) startProcessing::$6 ← (byte) startProcessing::freeIdx#2 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$6 ] ( main:2::startProcessing:34 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$6 ] ) always clobbers reg byte a +Statement [43] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$6 ] ( main:2::startProcessing:34 [ startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$6 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ startProcessing::$6 ] +Statement [44] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y#0 [ startProcessing::center_dist#0 startProcessing::$6 ] ( main:2::startProcessing:34 [ startProcessing::center_dist#0 startProcessing::$6 ] ) always clobbers reg byte a +Statement [45] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist#0 [ ] ( main:2::startProcessing:34 [ ] ) always clobbers reg byte a +Statement [54] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Statement [55] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a +Statement [56] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ getCharToProcess::$13 ] +Statement [57] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a +Statement [58] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a +Statement [64] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a +Statement [67] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [68] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a +Statement [69] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a +Statement [70] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a +Statement [71] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a +Statement [72] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a +Statement [73] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [75] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a +Statement [76] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a +Statement [77] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a +Statement [78] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a +Statement [87] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] +Statement [88] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a +Statement [89] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a +Statement [90] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 ] ) always clobbers reg byte a +Statement [100] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ initSquareTables::y#2 initSquareTables::y#1 ] +Statement [101] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a +Statement [102] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a +Statement [103] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 ] ) always clobbers reg byte a +Statement [107] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a +Statement [108] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a +Statement [115] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:20::mul8u:86 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:20::mul8u:99 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] +Statement [120] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [121] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [122] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [123] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [124] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [125] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [126] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [133] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [134] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [136] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [137] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [138] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [139] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [140] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [141] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [144] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$14 ] ( processChars:135 [ processChars::i#2 processChars::$14 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ processChars::i#2 processChars::i#1 ] +Statement [145] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$14)==(const word) NOT_FOUND#0) goto processChars::@2 [ processChars::i#2 ] ( processChars:135 [ processChars::i#2 ] ) always clobbers reg byte a +Statement [146] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$15 ] ( processChars:135 [ processChars::i#2 processChars::$15 ] ) always clobbers reg byte a +Statement [149] (word~) processChars::$3 ← (word)(byte) processChars::processing_y#0 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ processChars::processing_x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ processChars::processing_y#0 ] +Statement [150] (word) processChars::$22 ← (word~) processChars::$3 << (byte) 2 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 processChars::$22 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 processChars::$22 ] ) always clobbers reg byte a +Statement [151] (word) processChars::$23 ← (word) processChars::$22 + (word~) processChars::$3 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$23 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$23 ] ) always clobbers reg byte a +Statement [152] (word~) processChars::$4 ← (word) processChars::$23 << (byte) 3 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$4 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$4 ] ) always clobbers reg byte a +Statement [153] (byte*~) processChars::$5 ← (const byte*) COLS#0 + (word~) processChars::$4 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$5 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$5 ] ) always clobbers reg byte a +Statement [154] *((byte*~) processChars::$5 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 ] ) always clobbers reg byte a +Statement [155] (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0 [ processChars::i#2 processChars::processing_x#0 processChars::$7 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$7 ] ) always clobbers reg byte a +Statement [156] (word) processChars::$25 ← (word~) processChars::$7 << (byte) 2 [ processChars::i#2 processChars::processing_x#0 processChars::$7 processChars::$25 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$7 processChars::$25 ] ) always clobbers reg byte a +Statement [157] (word) processChars::$26 ← (word) processChars::$25 + (word~) processChars::$7 [ processChars::i#2 processChars::processing_x#0 processChars::$26 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$26 ] ) always clobbers reg byte a +Statement [158] (word~) processChars::$8 ← (word) processChars::$26 << (byte) 3 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ) always clobbers reg byte a +Statement [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (word~) processChars::$8 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ) always clobbers reg byte a +Statement [160] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ) always clobbers reg byte a +Statement [161] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ) always clobbers reg byte a +Statement [162] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) [ processChars::i#2 ] ( processChars:135 [ processChars::i#2 ] ) always clobbers reg byte a +Statement [166] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) [ processChars::i#2 ] ( processChars:135 [ processChars::i#2 ] ) always clobbers reg byte a +Statement [167] (byte~) processChars::$16 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$16 ] ( processChars:135 [ processChars::i#2 processChars::$16 ] ) always clobbers reg byte a +Statement [168] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$16) ← (const word) NOT_FOUND#0 [ processChars::i#2 ] ( processChars:135 [ processChars::i#2 ] ) always clobbers reg byte a +Statement [173] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [174] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [178] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [179] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [180] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [181] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [182] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [183] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [6] (byte~) main::$14 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] ) always clobbers reg byte a +Statement [7] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$14) ← (byte) 0 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] ) always clobbers reg byte a +Statement [8] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$14) ← (byte) 0 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] ) always clobbers reg byte a +Statement [9] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$14) ← (const word) NOT_FOUND#0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [15] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:2 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [18] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@3 [ main::src#1 main::dst#1 ] ( main:2 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a +Statement [25] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:2 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a +Statement [28] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a +Statement [29] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@6 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:2 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a +Statement [33] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 ] ( main:2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 ] ) always clobbers reg byte a +Statement [38] (byte~) startProcessing::$5 ← (byte) startProcessing::i#2 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$5 ] ( main:2::startProcessing:34 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$5 ] ) always clobbers reg byte a +Statement [39] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5)!=(const word) NOT_FOUND#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:2::startProcessing:34 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a +Statement [42] (byte~) startProcessing::$6 ← (byte) startProcessing::freeIdx#2 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$6 ] ( main:2::startProcessing:34 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$6 ] ) always clobbers reg byte a +Statement [43] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$6 ] ( main:2::startProcessing:34 [ startProcessing::center_y#0 startProcessing::center_dist#0 startProcessing::$6 ] ) always clobbers reg byte a +Statement [44] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y#0 [ startProcessing::center_dist#0 startProcessing::$6 ] ( main:2::startProcessing:34 [ startProcessing::center_dist#0 startProcessing::$6 ] ) always clobbers reg byte a +Statement [45] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist#0 [ ] ( main:2::startProcessing:34 [ ] ) always clobbers reg byte a +Statement [54] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a +Statement [55] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a +Statement [56] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a +Statement [57] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a +Statement [58] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a +Statement [64] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a +Statement [67] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [68] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a +Statement [69] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a +Statement [70] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a +Statement [71] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a +Statement [72] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a +Statement [73] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a +Statement [75] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a +Statement [76] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:2::getCharToProcess:22 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a +Statement [77] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a +Statement [78] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:2::getCharToProcess:22 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a +Statement [82] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a +Statement [87] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a +Statement [88] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a +Statement [89] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a +Statement [90] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 ] ) always clobbers reg byte a +Statement [95] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a +Statement [100] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a +Statement [101] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a +Statement [102] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a +Statement [103] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 ] ) always clobbers reg byte a +Statement [107] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:2::initSquareTables:20 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a +Statement [108] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:2::initSquareTables:20 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a +Statement [113] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::initSquareTables:20::mul8u:86 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::initSquareTables:20::mul8u:99 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [115] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::initSquareTables:20::mul8u:86 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::initSquareTables:20::mul8u:99 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [120] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [121] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [122] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [123] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [124] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [125] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [126] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:2::setupRasterIrq:13 [ ] ) always clobbers reg byte a +Statement [133] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [134] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [136] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [137] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [138] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [139] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a +Statement [140] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [141] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [144] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$14 ] ( processChars:135 [ processChars::i#2 processChars::$14 ] ) always clobbers reg byte a +Statement [145] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$14)==(const word) NOT_FOUND#0) goto processChars::@2 [ processChars::i#2 ] ( processChars:135 [ processChars::i#2 ] ) always clobbers reg byte a +Statement [146] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$15 ] ( processChars:135 [ processChars::i#2 processChars::$15 ] ) always clobbers reg byte a +Statement [149] (word~) processChars::$3 ← (word)(byte) processChars::processing_y#0 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 ] ) always clobbers reg byte a +Statement [150] (word) processChars::$22 ← (word~) processChars::$3 << (byte) 2 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 processChars::$22 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$3 processChars::$22 ] ) always clobbers reg byte a +Statement [151] (word) processChars::$23 ← (word) processChars::$22 + (word~) processChars::$3 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$23 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$23 ] ) always clobbers reg byte a +Statement [152] (word~) processChars::$4 ← (word) processChars::$23 << (byte) 3 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$4 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$4 ] ) always clobbers reg byte a +Statement [153] (byte*~) processChars::$5 ← (const byte*) COLS#0 + (word~) processChars::$4 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$5 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 processChars::$5 ] ) always clobbers reg byte a +Statement [154] *((byte*~) processChars::$5 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::processing_y#0 ] ) always clobbers reg byte a +Statement [155] (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0 [ processChars::i#2 processChars::processing_x#0 processChars::$7 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$7 ] ) always clobbers reg byte a +Statement [156] (word) processChars::$25 ← (word~) processChars::$7 << (byte) 2 [ processChars::i#2 processChars::processing_x#0 processChars::$7 processChars::$25 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$7 processChars::$25 ] ) always clobbers reg byte a +Statement [157] (word) processChars::$26 ← (word) processChars::$25 + (word~) processChars::$7 [ processChars::i#2 processChars::processing_x#0 processChars::$26 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$26 ] ) always clobbers reg byte a +Statement [158] (word~) processChars::$8 ← (word) processChars::$26 << (byte) 3 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$8 ] ) always clobbers reg byte a +Statement [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (word~) processChars::$8 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ) always clobbers reg byte a +Statement [160] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ) always clobbers reg byte a +Statement [161] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ( processChars:135 [ processChars::i#2 processChars::processing_x#0 processChars::$9 ] ) always clobbers reg byte a +Statement [162] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) [ processChars::i#2 ] ( processChars:135 [ processChars::i#2 ] ) always clobbers reg byte a +Statement [166] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) [ processChars::i#2 ] ( processChars:135 [ processChars::i#2 ] ) always clobbers reg byte a +Statement [167] (byte~) processChars::$16 ← (byte) processChars::i#2 << (byte) 2 [ processChars::i#2 processChars::$16 ] ( processChars:135 [ processChars::i#2 processChars::$16 ] ) always clobbers reg byte a +Statement [168] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$16) ← (const word) NOT_FOUND#0 [ processChars::i#2 ] ( processChars:135 [ processChars::i#2 ] ) always clobbers reg byte a +Statement [173] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [174] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [178] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [179] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [180] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [181] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a +Statement [182] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [183] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:3 [ main::sc#2 main::sc#1 ] : zp ZP_WORD:3 , -Potential registers zp ZP_WORD:5 [ main::src#2 main::src#1 ] : zp ZP_WORD:5 , -Potential registers zp ZP_WORD:7 [ main::dst#2 main::dst#1 ] : zp ZP_WORD:7 , -Potential registers zp ZP_BYTE:9 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:10 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:11 [ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] : zp ZP_WORD:11 , -Potential registers zp ZP_BYTE:13 [ getCenterChar::y#7 getCenterChar::y#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:14 [ getCenterChar::x#2 getCenterChar::x#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:15 [ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] : zp ZP_WORD:15 , -Potential registers zp ZP_BYTE:17 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] : zp ZP_BYTE:17 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:18 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] : zp ZP_BYTE:18 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:19 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 ] : zp ZP_WORD:19 , -Potential registers zp ZP_BYTE:21 [ initSquareTables::x#2 initSquareTables::x#1 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:22 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:23 [ initSquareTables::y#2 initSquareTables::y#1 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:24 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:25 [ mul8u::b#1 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ mul8u::b#0 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] : zp ZP_BYTE:27 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:28 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:28 , -Potential registers zp ZP_WORD:30 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp ZP_WORD:30 , -Potential registers zp ZP_BYTE:32 [ irqBottom::i#2 irqBottom::i#1 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ processChars::i#2 processChars::i#1 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ irqTop::i#2 irqTop::i#1 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ irqTop::i1#2 irqTop::i1#1 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:36 [ main::$18 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:37 [ main::$5 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:38 [ main::$6 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:39 [ main::$7 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:40 [ getCenterChar::return_x#0 ] : zp ZP_BYTE:40 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:41 [ getCenterChar::return_y#0 ] : zp ZP_BYTE:41 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:42 [ getCenterChar::return_dist#0 ] : zp ZP_WORD:42 , -Potential registers zp ZP_BYTE:44 [ main::center_x#0 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ main::center_y#0 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:46 [ main::center_dist#0 ] : zp ZP_WORD:46 , -Potential registers zp ZP_BYTE:48 [ startProcessing::center_x#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ startProcessing::center_y#0 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:50 [ startProcessing::center_dist#0 ] : zp ZP_WORD:50 , -Potential registers zp ZP_BYTE:52 [ startProcessing::$4 ] : zp ZP_BYTE:52 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:53 [ startProcessing::$5 ] : zp ZP_BYTE:53 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:54 [ getCenterChar::$13 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:55 [ getCenterChar::$14 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:56 [ getCenterChar::$9 ] : zp ZP_WORD:56 , -Potential registers zp ZP_WORD:58 [ getCenterChar::$15 ] : zp ZP_WORD:58 , -Potential registers zp ZP_WORD:60 [ getCenterChar::$16 ] : zp ZP_WORD:60 , -Potential registers zp ZP_WORD:62 [ getCenterChar::$10 ] : zp ZP_WORD:62 , -Potential registers zp ZP_WORD:64 [ getCenterChar::$11 ] : zp ZP_WORD:64 , -Potential registers zp ZP_WORD:66 [ mul8u::return#2 ] : zp ZP_WORD:66 , -Potential registers zp ZP_WORD:68 [ initSquareTables::$6 ] : zp ZP_WORD:68 , -Potential registers zp ZP_BYTE:70 [ initSquareTables::$16 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:71 [ mul8u::return#3 ] : zp ZP_WORD:71 , -Potential registers zp ZP_WORD:73 [ initSquareTables::$14 ] : zp ZP_WORD:73 , -Potential registers zp ZP_BYTE:75 [ initSquareTables::$17 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:76 [ mul8u::$1 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ processChars::$13 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ processChars::$14 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ processChars::processing_x#0 ] : zp ZP_BYTE:79 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ processChars::processing_y#0 ] : zp ZP_BYTE:80 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:81 [ processChars::$2 ] : zp ZP_WORD:81 , -Potential registers zp ZP_WORD:83 [ processChars::$21 ] : zp ZP_WORD:83 , -Potential registers zp ZP_WORD:85 [ processChars::$22 ] : zp ZP_WORD:85 , -Potential registers zp ZP_WORD:87 [ processChars::$3 ] : zp ZP_WORD:87 , -Potential registers zp ZP_WORD:89 [ processChars::$4 ] : zp ZP_WORD:89 , -Potential registers zp ZP_WORD:91 [ processChars::$6 ] : zp ZP_WORD:91 , -Potential registers zp ZP_WORD:93 [ processChars::$24 ] : zp ZP_WORD:93 , -Potential registers zp ZP_WORD:95 [ processChars::$25 ] : zp ZP_WORD:95 , -Potential registers zp ZP_WORD:97 [ processChars::$7 ] : zp ZP_WORD:97 , -Potential registers zp ZP_WORD:99 [ processChars::$8 ] : zp ZP_WORD:99 , -Potential registers zp ZP_BYTE:101 [ processChars::$15 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:3 [ main::src#2 main::src#1 ] : zp ZP_WORD:3 , +Potential registers zp ZP_WORD:5 [ main::dst#2 main::dst#1 ] : zp ZP_WORD:5 , +Potential registers zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:9 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] : zp ZP_WORD:9 , +Potential registers zp ZP_BYTE:11 [ getCharToProcess::y#7 getCharToProcess::y#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:12 [ getCharToProcess::x#2 getCharToProcess::x#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:13 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] : zp ZP_WORD:13 , +Potential registers zp ZP_BYTE:15 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:16 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] : zp ZP_BYTE:16 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:17 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] : zp ZP_WORD:17 , +Potential registers zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:21 [ initSquareTables::y#2 initSquareTables::y#1 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:22 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:23 [ mul8u::b#1 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ mul8u::b#0 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:26 , +Potential registers zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp ZP_WORD:28 , +Potential registers zp ZP_BYTE:30 [ irqBottom::i#2 irqBottom::i#1 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ processChars::i#2 processChars::i#1 ] : zp ZP_BYTE:31 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ irqTop::i#2 irqTop::i#1 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ irqTop::i1#2 irqTop::i1#1 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:34 [ main::$14 ] : zp ZP_BYTE:34 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:35 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:35 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:36 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:37 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:37 , +Potential registers zp ZP_BYTE:39 [ main::center_x#0 ] : zp ZP_BYTE:39 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:40 [ main::center_y#0 ] : zp ZP_BYTE:40 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:41 [ main::center_dist#0 ] : zp ZP_WORD:41 , +Potential registers zp ZP_BYTE:43 [ startProcessing::center_x#0 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ startProcessing::center_y#0 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:45 [ startProcessing::center_dist#0 ] : zp ZP_WORD:45 , +Potential registers zp ZP_BYTE:47 [ startProcessing::$5 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ startProcessing::$6 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ getCharToProcess::$13 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ getCharToProcess::$14 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:51 [ getCharToProcess::$9 ] : zp ZP_WORD:51 , +Potential registers zp ZP_WORD:53 [ getCharToProcess::$15 ] : zp ZP_WORD:53 , +Potential registers zp ZP_WORD:55 [ getCharToProcess::$16 ] : zp ZP_WORD:55 , +Potential registers zp ZP_WORD:57 [ getCharToProcess::$10 ] : zp ZP_WORD:57 , +Potential registers zp ZP_WORD:59 [ getCharToProcess::$11 ] : zp ZP_WORD:59 , +Potential registers zp ZP_WORD:61 [ mul8u::return#2 ] : zp ZP_WORD:61 , +Potential registers zp ZP_WORD:63 [ initSquareTables::$6 ] : zp ZP_WORD:63 , +Potential registers zp ZP_BYTE:65 [ initSquareTables::$16 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:66 [ mul8u::return#3 ] : zp ZP_WORD:66 , +Potential registers zp ZP_WORD:68 [ initSquareTables::$14 ] : zp ZP_WORD:68 , +Potential registers zp ZP_BYTE:70 [ initSquareTables::$17 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:71 [ mul8u::$1 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:72 [ processChars::$14 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ processChars::$15 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ processChars::processing_x#0 ] : zp ZP_BYTE:74 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ processChars::processing_y#0 ] : zp ZP_BYTE:75 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:76 [ processChars::$3 ] : zp ZP_WORD:76 , +Potential registers zp ZP_WORD:78 [ processChars::$22 ] : zp ZP_WORD:78 , +Potential registers zp ZP_WORD:80 [ processChars::$23 ] : zp ZP_WORD:80 , +Potential registers zp ZP_WORD:82 [ processChars::$4 ] : zp ZP_WORD:82 , +Potential registers zp ZP_WORD:84 [ processChars::$5 ] : zp ZP_WORD:84 , +Potential registers zp ZP_WORD:86 [ processChars::$7 ] : zp ZP_WORD:86 , +Potential registers zp ZP_WORD:88 [ processChars::$25 ] : zp ZP_WORD:88 , +Potential registers zp ZP_WORD:90 [ processChars::$26 ] : zp ZP_WORD:90 , +Potential registers zp ZP_WORD:92 [ processChars::$8 ] : zp ZP_WORD:92 , +Potential registers zp ZP_WORD:94 [ processChars::$9 ] : zp ZP_WORD:94 , +Potential registers zp ZP_BYTE:96 [ processChars::$16 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [getCenterChar] 4,996.99: zp ZP_WORD:19 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 ] 3,090.17: zp ZP_WORD:15 [ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] 2,820.67: zp ZP_BYTE:18 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] 2,002: zp ZP_BYTE:55 [ getCenterChar::$14 ] 1,833.24: zp ZP_BYTE:17 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] 1,456: zp ZP_BYTE:14 [ getCenterChar::x#2 getCenterChar::x#1 ] 1,001: zp ZP_BYTE:54 [ getCenterChar::$13 ] 238.75: zp ZP_BYTE:13 [ getCenterChar::y#7 getCenterChar::y#1 ] 130.7: zp ZP_WORD:11 [ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] 7.33: zp ZP_BYTE:40 [ getCenterChar::return_x#0 ] 7.33: zp ZP_BYTE:41 [ getCenterChar::return_y#0 ] 7.33: zp ZP_WORD:42 [ getCenterChar::return_dist#0 ] 4: zp ZP_WORD:58 [ getCenterChar::$15 ] 4: zp ZP_WORD:60 [ getCenterChar::$16 ] 4: zp ZP_WORD:62 [ getCenterChar::$10 ] 4: zp ZP_WORD:64 [ getCenterChar::$11 ] 3: zp ZP_WORD:56 [ getCenterChar::$9 ] -Uplift Scope [startProcessing] 3,691.17: zp ZP_BYTE:10 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:52 [ startProcessing::$4 ] 235.67: zp ZP_BYTE:9 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 2.67: zp ZP_BYTE:53 [ startProcessing::$5 ] 0.87: zp ZP_BYTE:48 [ startProcessing::center_x#0 ] 0.87: zp ZP_BYTE:49 [ startProcessing::center_y#0 ] 0.87: zp ZP_WORD:50 [ startProcessing::center_dist#0 ] -Uplift Scope [mul8u] 349.43: zp ZP_WORD:28 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 269.57: zp ZP_WORD:30 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 214.67: zp ZP_BYTE:27 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp ZP_BYTE:76 [ mul8u::$1 ] 22: zp ZP_BYTE:25 [ mul8u::b#1 ] 22: zp ZP_BYTE:26 [ mul8u::b#0 ] 22: zp ZP_WORD:66 [ mul8u::return#2 ] 22: zp ZP_WORD:71 [ mul8u::return#3 ] -Uplift Scope [processChars] 25.67: zp ZP_WORD:99 [ processChars::$8 ] 22: zp ZP_BYTE:77 [ processChars::$13 ] 22: zp ZP_WORD:83 [ processChars::$21 ] 22: zp ZP_WORD:85 [ processChars::$22 ] 22: zp ZP_WORD:87 [ processChars::$3 ] 22: zp ZP_WORD:89 [ processChars::$4 ] 22: zp ZP_WORD:93 [ processChars::$24 ] 22: zp ZP_WORD:95 [ processChars::$25 ] 22: zp ZP_WORD:97 [ processChars::$7 ] 22: zp ZP_BYTE:101 [ processChars::$15 ] 18.89: zp ZP_BYTE:33 [ processChars::i#2 processChars::i#1 ] 16.5: zp ZP_BYTE:78 [ processChars::$14 ] 16.5: zp ZP_WORD:81 [ processChars::$2 ] 16.5: zp ZP_WORD:91 [ processChars::$6 ] 5.87: zp ZP_BYTE:79 [ processChars::processing_x#0 ] 1.57: zp ZP_BYTE:80 [ processChars::processing_y#0 ] -Uplift Scope [initSquareTables] 66: zp ZP_BYTE:22 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] 66: zp ZP_BYTE:24 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] 22: zp ZP_BYTE:21 [ initSquareTables::x#2 initSquareTables::x#1 ] 22: zp ZP_BYTE:23 [ initSquareTables::y#2 initSquareTables::y#1 ] 22: zp ZP_BYTE:70 [ initSquareTables::$16 ] 22: zp ZP_BYTE:75 [ initSquareTables::$17 ] 11: zp ZP_WORD:68 [ initSquareTables::$6 ] 11: zp ZP_WORD:73 [ initSquareTables::$14 ] -Uplift Scope [main] 27.5: zp ZP_WORD:5 [ main::src#2 main::src#1 ] 25.3: zp ZP_WORD:3 [ main::sc#2 main::sc#1 ] 23.1: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_WORD:7 [ main::dst#2 main::dst#1 ] 22: zp ZP_BYTE:37 [ main::$5 ] 22: zp ZP_BYTE:38 [ main::$6 ] 22: zp ZP_BYTE:39 [ main::$7 ] 14.67: zp ZP_BYTE:36 [ main::$18 ] 8.25: zp ZP_WORD:46 [ main::center_dist#0 ] 5.5: zp ZP_BYTE:44 [ main::center_x#0 ] 5.5: zp ZP_BYTE:45 [ main::center_y#0 ] -Uplift Scope [irqTop] 38.5: zp ZP_BYTE:34 [ irqTop::i#2 irqTop::i#1 ] 38.5: zp ZP_BYTE:35 [ irqTop::i1#2 irqTop::i1#1 ] -Uplift Scope [irqBottom] 38.5: zp ZP_BYTE:32 [ irqBottom::i#2 irqBottom::i#1 ] +Uplift Scope [getCharToProcess] 4,996.99: zp ZP_WORD:17 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,090.17: zp ZP_WORD:13 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,820.67: zp ZP_BYTE:16 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 2,002: zp ZP_BYTE:50 [ getCharToProcess::$14 ] 1,833.24: zp ZP_BYTE:15 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,456: zp ZP_BYTE:12 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 1,001: zp ZP_BYTE:49 [ getCharToProcess::$13 ] 238.75: zp ZP_BYTE:11 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 130.7: zp ZP_WORD:9 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] 7.33: zp ZP_BYTE:35 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:36 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:37 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:53 [ getCharToProcess::$15 ] 4: zp ZP_WORD:55 [ getCharToProcess::$16 ] 4: zp ZP_WORD:57 [ getCharToProcess::$10 ] 4: zp ZP_WORD:59 [ getCharToProcess::$11 ] 3: zp ZP_WORD:51 [ getCharToProcess::$9 ] +Uplift Scope [startProcessing] 3,691.17: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:47 [ startProcessing::$5 ] 235.67: zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 2.67: zp ZP_BYTE:48 [ startProcessing::$6 ] 0.87: zp ZP_BYTE:43 [ startProcessing::center_x#0 ] 0.87: zp ZP_BYTE:44 [ startProcessing::center_y#0 ] 0.87: zp ZP_WORD:45 [ startProcessing::center_dist#0 ] +Uplift Scope [mul8u] 349.43: zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 269.57: zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 214.67: zp ZP_BYTE:25 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp ZP_BYTE:71 [ mul8u::$1 ] 22: zp ZP_BYTE:23 [ mul8u::b#1 ] 22: zp ZP_BYTE:24 [ mul8u::b#0 ] 22: zp ZP_WORD:61 [ mul8u::return#2 ] 22: zp ZP_WORD:66 [ mul8u::return#3 ] +Uplift Scope [processChars] 25.67: zp ZP_WORD:94 [ processChars::$9 ] 22: zp ZP_BYTE:72 [ processChars::$14 ] 22: zp ZP_WORD:78 [ processChars::$22 ] 22: zp ZP_WORD:80 [ processChars::$23 ] 22: zp ZP_WORD:82 [ processChars::$4 ] 22: zp ZP_WORD:84 [ processChars::$5 ] 22: zp ZP_WORD:88 [ processChars::$25 ] 22: zp ZP_WORD:90 [ processChars::$26 ] 22: zp ZP_WORD:92 [ processChars::$8 ] 22: zp ZP_BYTE:96 [ processChars::$16 ] 18.89: zp ZP_BYTE:31 [ processChars::i#2 processChars::i#1 ] 16.5: zp ZP_BYTE:73 [ processChars::$15 ] 16.5: zp ZP_WORD:76 [ processChars::$3 ] 16.5: zp ZP_WORD:86 [ processChars::$7 ] 5.87: zp ZP_BYTE:74 [ processChars::processing_x#0 ] 1.57: zp ZP_BYTE:75 [ processChars::processing_y#0 ] +Uplift Scope [initSquareTables] 66: zp ZP_BYTE:20 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] 66: zp ZP_BYTE:22 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] 22: zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] 22: zp ZP_BYTE:21 [ initSquareTables::y#2 initSquareTables::y#1 ] 22: zp ZP_BYTE:65 [ initSquareTables::$16 ] 22: zp ZP_BYTE:70 [ initSquareTables::$17 ] 11: zp ZP_WORD:63 [ initSquareTables::$6 ] 11: zp ZP_WORD:68 [ initSquareTables::$14 ] +Uplift Scope [main] 27.5: zp ZP_WORD:3 [ main::src#2 main::src#1 ] 23.1: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_WORD:5 [ main::dst#2 main::dst#1 ] 14.67: zp ZP_BYTE:34 [ main::$14 ] 8.25: zp ZP_WORD:41 [ main::center_dist#0 ] 5.5: zp ZP_BYTE:39 [ main::center_x#0 ] 5.5: zp ZP_BYTE:40 [ main::center_y#0 ] +Uplift Scope [irqTop] 38.5: zp ZP_BYTE:32 [ irqTop::i#2 irqTop::i#1 ] 38.5: zp ZP_BYTE:33 [ irqTop::i1#2 irqTop::i1#1 ] +Uplift Scope [irqBottom] 38.5: zp ZP_BYTE:30 [ irqBottom::i#2 irqBottom::i#1 ] Uplift Scope [ProcessingChar] Uplift Scope [setupRasterIrq] Uplift Scope [] -Uplifting [getCenterChar] best 256062 combination zp ZP_WORD:19 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 ] zp ZP_WORD:15 [ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] zp ZP_BYTE:18 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] reg byte a [ getCenterChar::$14 ] zp ZP_BYTE:17 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] zp ZP_BYTE:14 [ getCenterChar::x#2 getCenterChar::x#1 ] zp ZP_BYTE:54 [ getCenterChar::$13 ] zp ZP_BYTE:13 [ getCenterChar::y#7 getCenterChar::y#1 ] zp ZP_WORD:11 [ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] zp ZP_BYTE:40 [ getCenterChar::return_x#0 ] zp ZP_BYTE:41 [ getCenterChar::return_y#0 ] zp ZP_WORD:42 [ getCenterChar::return_dist#0 ] zp ZP_WORD:58 [ getCenterChar::$15 ] zp ZP_WORD:60 [ getCenterChar::$16 ] zp ZP_WORD:62 [ getCenterChar::$10 ] zp ZP_WORD:64 [ getCenterChar::$11 ] zp ZP_WORD:56 [ getCenterChar::$9 ] +Uplifting [getCharToProcess] best 255297 combination zp ZP_WORD:17 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp ZP_WORD:13 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp ZP_BYTE:16 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] reg byte a [ getCharToProcess::$14 ] zp ZP_BYTE:15 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp ZP_BYTE:12 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp ZP_BYTE:49 [ getCharToProcess::$13 ] zp ZP_BYTE:11 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:9 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:35 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:36 [ getCharToProcess::return_y#0 ] zp ZP_WORD:37 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:53 [ getCharToProcess::$15 ] zp ZP_WORD:55 [ getCharToProcess::$16 ] zp ZP_WORD:57 [ getCharToProcess::$10 ] zp ZP_WORD:59 [ getCharToProcess::$11 ] zp ZP_WORD:51 [ getCharToProcess::$9 ] Limited combination testing to 100 combinations of 8748 possible. -Uplifting [startProcessing] best 241151 combination reg byte x [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$4 ] zp ZP_BYTE:9 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] reg byte x [ startProcessing::$5 ] zp ZP_BYTE:48 [ startProcessing::center_x#0 ] zp ZP_BYTE:49 [ startProcessing::center_y#0 ] zp ZP_WORD:50 [ startProcessing::center_dist#0 ] +Uplifting [startProcessing] best 240386 combination reg byte x [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$5 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] reg byte x [ startProcessing::$6 ] zp ZP_BYTE:43 [ startProcessing::center_x#0 ] zp ZP_BYTE:44 [ startProcessing::center_y#0 ] zp ZP_WORD:45 [ startProcessing::center_dist#0 ] Limited combination testing to 100 combinations of 972 possible. -Uplifting [mul8u] best 240125 combination zp ZP_WORD:28 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:30 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:66 [ mul8u::return#2 ] zp ZP_WORD:71 [ mul8u::return#3 ] +Uplifting [mul8u] best 239360 combination zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:61 [ mul8u::return#2 ] zp ZP_WORD:66 [ mul8u::return#3 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [processChars] best 239925 combination zp ZP_WORD:99 [ processChars::$8 ] reg byte a [ processChars::$13 ] zp ZP_WORD:83 [ processChars::$21 ] zp ZP_WORD:85 [ processChars::$22 ] zp ZP_WORD:87 [ processChars::$3 ] zp ZP_WORD:89 [ processChars::$4 ] zp ZP_WORD:93 [ processChars::$24 ] zp ZP_WORD:95 [ processChars::$25 ] zp ZP_WORD:97 [ processChars::$7 ] reg byte a [ processChars::$15 ] reg byte x [ processChars::i#2 processChars::i#1 ] zp ZP_BYTE:78 [ processChars::$14 ] zp ZP_WORD:81 [ processChars::$2 ] zp ZP_WORD:91 [ processChars::$6 ] zp ZP_BYTE:79 [ processChars::processing_x#0 ] zp ZP_BYTE:80 [ processChars::processing_y#0 ] +Uplifting [processChars] best 239160 combination zp ZP_WORD:94 [ processChars::$9 ] reg byte a [ processChars::$14 ] zp ZP_WORD:78 [ processChars::$22 ] zp ZP_WORD:80 [ processChars::$23 ] zp ZP_WORD:82 [ processChars::$4 ] zp ZP_WORD:84 [ processChars::$5 ] zp ZP_WORD:88 [ processChars::$25 ] zp ZP_WORD:90 [ processChars::$26 ] zp ZP_WORD:92 [ processChars::$8 ] reg byte a [ processChars::$16 ] reg byte x [ processChars::i#2 processChars::i#1 ] zp ZP_BYTE:73 [ processChars::$15 ] zp ZP_WORD:76 [ processChars::$3 ] zp ZP_WORD:86 [ processChars::$7 ] zp ZP_BYTE:74 [ processChars::processing_x#0 ] zp ZP_BYTE:75 [ processChars::processing_y#0 ] Limited combination testing to 100 combinations of 1728 possible. -Uplifting [initSquareTables] best 239765 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:21 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:23 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:70 [ initSquareTables::$16 ] zp ZP_BYTE:75 [ initSquareTables::$17 ] zp ZP_WORD:68 [ initSquareTables::$6 ] zp ZP_WORD:73 [ initSquareTables::$14 ] +Uplifting [initSquareTables] best 239000 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:21 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:65 [ initSquareTables::$16 ] zp ZP_BYTE:70 [ initSquareTables::$17 ] zp ZP_WORD:63 [ initSquareTables::$6 ] zp ZP_WORD:68 [ initSquareTables::$14 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [main] best 239505 combination zp ZP_WORD:5 [ main::src#2 main::src#1 ] zp ZP_WORD:3 [ main::sc#2 main::sc#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:7 [ main::dst#2 main::dst#1 ] reg byte a [ main::$5 ] reg byte a [ main::$6 ] reg byte a [ main::$7 ] zp ZP_BYTE:36 [ main::$18 ] zp ZP_WORD:46 [ main::center_dist#0 ] zp ZP_BYTE:44 [ main::center_x#0 ] zp ZP_BYTE:45 [ main::center_y#0 ] -Limited combination testing to 100 combinations of 5184 possible. -Uplifting [irqTop] best 239325 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -Uplifting [irqBottom] best 239235 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ] -Uplifting [ProcessingChar] best 239235 combination -Uplifting [setupRasterIrq] best 239235 combination -Uplifting [] best 239235 combination -Attempting to uplift remaining variables inzp ZP_BYTE:18 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -Uplifting [getCenterChar] best 239235 combination zp ZP_BYTE:18 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:17 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -Uplifting [getCenterChar] best 239235 combination zp ZP_BYTE:17 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:14 [ getCenterChar::x#2 getCenterChar::x#1 ] -Uplifting [getCenterChar] best 239235 combination zp ZP_BYTE:14 [ getCenterChar::x#2 getCenterChar::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:54 [ getCenterChar::$13 ] -Uplifting [getCenterChar] best 235235 combination reg byte x [ getCenterChar::$13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:13 [ getCenterChar::y#7 getCenterChar::y#1 ] -Uplifting [getCenterChar] best 235235 combination zp ZP_BYTE:13 [ getCenterChar::y#7 getCenterChar::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:9 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Uplifting [startProcessing] best 235235 combination zp ZP_BYTE:9 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ initSquareTables::x#2 initSquareTables::x#1 ] -Uplifting [initSquareTables] best 235235 combination zp ZP_BYTE:21 [ initSquareTables::x#2 initSquareTables::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:23 [ initSquareTables::y#2 initSquareTables::y#1 ] -Uplifting [initSquareTables] best 235235 combination zp ZP_BYTE:23 [ initSquareTables::y#2 initSquareTables::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:70 [ initSquareTables::$16 ] -Uplifting [initSquareTables] best 235195 combination reg byte a [ initSquareTables::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:75 [ initSquareTables::$17 ] -Uplifting [initSquareTables] best 235155 combination reg byte a [ initSquareTables::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:78 [ processChars::$14 ] -Uplifting [processChars] best 235085 combination reg byte y [ processChars::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:36 [ main::$18 ] -Uplifting [main] best 234985 combination reg byte y [ main::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:40 [ getCenterChar::return_x#0 ] -Uplifting [getCenterChar] best 234925 combination reg byte x [ getCenterChar::return_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:41 [ getCenterChar::return_y#0 ] -Uplifting [getCenterChar] best 234865 combination reg byte y [ getCenterChar::return_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:79 [ processChars::processing_x#0 ] -Uplifting [processChars] best 234865 combination zp ZP_BYTE:79 [ processChars::processing_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:44 [ main::center_x#0 ] -Uplifting [main] best 234805 combination reg byte x [ main::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:45 [ main::center_y#0 ] -Uplifting [main] best 234745 combination reg byte y [ main::center_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:80 [ processChars::processing_y#0 ] -Uplifting [processChars] best 234745 combination zp ZP_BYTE:80 [ processChars::processing_y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ startProcessing::center_x#0 ] -Uplifting [startProcessing] best 234745 combination zp ZP_BYTE:48 [ startProcessing::center_x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:49 [ startProcessing::center_y#0 ] -Uplifting [startProcessing] best 234745 combination zp ZP_BYTE:49 [ startProcessing::center_y#0 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 ] ] with [ zp ZP_WORD:42 [ getCenterChar::return_dist#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:66 [ mul8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:71 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ main::center_dist#0 ] ] with [ zp ZP_WORD:50 [ startProcessing::center_dist#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:56 [ getCenterChar::$9 ] ] with [ zp ZP_WORD:60 [ getCenterChar::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:62 [ getCenterChar::$10 ] ] with [ zp ZP_WORD:64 [ getCenterChar::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:81 [ processChars::$2 ] ] with [ zp ZP_WORD:85 [ processChars::$22 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:87 [ processChars::$3 ] ] with [ zp ZP_WORD:89 [ processChars::$4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:91 [ processChars::$6 ] ] with [ zp ZP_WORD:95 [ processChars::$25 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:97 [ processChars::$7 ] ] with [ zp ZP_WORD:99 [ processChars::$8 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 getCenterChar::return_dist#0 ] ] with [ zp ZP_WORD:46 [ main::center_dist#0 startProcessing::center_dist#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp ZP_WORD:68 [ initSquareTables::$6 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 ] ] with [ zp ZP_WORD:73 [ initSquareTables::$14 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:56 [ getCenterChar::$9 getCenterChar::$16 ] ] with [ zp ZP_WORD:62 [ getCenterChar::$10 getCenterChar::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:81 [ processChars::$2 processChars::$22 ] ] with [ zp ZP_WORD:87 [ processChars::$3 processChars::$4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:91 [ processChars::$6 processChars::$25 ] ] with [ zp ZP_WORD:97 [ processChars::$7 processChars::$8 ] ] - score: 1 -Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] -Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ main::src#2 main::src#1 ] -Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ main::dst#2 main::dst#1 ] -Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:8 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] -Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:11 [ getCenterChar::y#7 getCenterChar::y#1 ] -Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:12 [ getCenterChar::x#2 getCenterChar::x#1 ] -Allocated (was zp ZP_WORD:15) zp ZP_WORD:13 [ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] -Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:15 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:16 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -Allocated (was zp ZP_WORD:19) zp ZP_WORD:17 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 getCenterChar::return_dist#0 main::center_dist#0 startProcessing::center_dist#0 ] -Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] -Allocated (was zp ZP_BYTE:23) zp ZP_BYTE:20 [ initSquareTables::y#2 initSquareTables::y#1 ] -Allocated (was zp ZP_WORD:28) zp ZP_WORD:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] -Allocated (was zp ZP_WORD:30) zp ZP_WORD:23 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -Allocated (was zp ZP_BYTE:48) zp ZP_BYTE:25 [ startProcessing::center_x#0 ] -Allocated (was zp ZP_BYTE:49) zp ZP_BYTE:26 [ startProcessing::center_y#0 ] -Allocated (was zp ZP_WORD:56) zp ZP_WORD:27 [ getCenterChar::$9 getCenterChar::$16 getCenterChar::$10 getCenterChar::$11 ] -Allocated (was zp ZP_WORD:58) zp ZP_WORD:29 [ getCenterChar::$15 ] -Allocated (was zp ZP_BYTE:79) zp ZP_BYTE:31 [ processChars::processing_x#0 ] -Allocated (was zp ZP_BYTE:80) zp ZP_BYTE:32 [ processChars::processing_y#0 ] -Allocated (was zp ZP_WORD:81) zp ZP_WORD:33 [ processChars::$2 processChars::$22 processChars::$3 processChars::$4 ] -Allocated (was zp ZP_WORD:83) zp ZP_WORD:35 [ processChars::$21 ] -Allocated (was zp ZP_WORD:91) zp ZP_WORD:37 [ processChars::$6 processChars::$25 processChars::$7 processChars::$8 ] -Allocated (was zp ZP_WORD:93) zp ZP_WORD:39 [ processChars::$24 ] +Uplifting [main] best 238680 combination zp ZP_WORD:3 [ main::src#2 main::src#1 ] reg byte y [ main::i#2 main::i#1 ] zp ZP_WORD:5 [ main::dst#2 main::dst#1 ] reg byte x [ main::$14 ] zp ZP_WORD:41 [ main::center_dist#0 ] reg byte y [ main::center_x#0 ] reg byte x [ main::center_y#0 ] +Uplifting [irqTop] best 238500 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] +Uplifting [irqBottom] best 238410 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ] +Uplifting [ProcessingChar] best 238410 combination +Uplifting [setupRasterIrq] best 238410 combination +Uplifting [] best 238410 combination +Attempting to uplift remaining variables inzp ZP_BYTE:16 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Uplifting [getCharToProcess] best 238410 combination zp ZP_BYTE:16 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:15 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Uplifting [getCharToProcess] best 238410 combination zp ZP_BYTE:15 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Uplifting [getCharToProcess] best 238410 combination zp ZP_BYTE:12 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:49 [ getCharToProcess::$13 ] +Uplifting [getCharToProcess] best 234410 combination reg byte x [ getCharToProcess::$13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:11 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Uplifting [getCharToProcess] best 234410 combination zp ZP_BYTE:11 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Uplifting [startProcessing] best 234410 combination zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] +Uplifting [initSquareTables] best 234410 combination zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ initSquareTables::y#2 initSquareTables::y#1 ] +Uplifting [initSquareTables] best 234410 combination zp ZP_BYTE:21 [ initSquareTables::y#2 initSquareTables::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:65 [ initSquareTables::$16 ] +Uplifting [initSquareTables] best 234370 combination reg byte a [ initSquareTables::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:70 [ initSquareTables::$17 ] +Uplifting [initSquareTables] best 234330 combination reg byte a [ initSquareTables::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ processChars::$15 ] +Uplifting [processChars] best 234260 combination reg byte y [ processChars::$15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:35 [ getCharToProcess::return_x#0 ] +Uplifting [getCharToProcess] best 234200 combination reg byte y [ getCharToProcess::return_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:36 [ getCharToProcess::return_y#0 ] +Uplifting [getCharToProcess] best 234140 combination reg byte x [ getCharToProcess::return_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:74 [ processChars::processing_x#0 ] +Uplifting [processChars] best 234140 combination zp ZP_BYTE:74 [ processChars::processing_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:75 [ processChars::processing_y#0 ] +Uplifting [processChars] best 234140 combination zp ZP_BYTE:75 [ processChars::processing_y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ startProcessing::center_x#0 ] +Uplifting [startProcessing] best 234140 combination zp ZP_BYTE:43 [ startProcessing::center_x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:44 [ startProcessing::center_y#0 ] +Uplifting [startProcessing] best 234140 combination zp ZP_BYTE:44 [ startProcessing::center_y#0 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] ] with [ zp ZP_WORD:37 [ getCharToProcess::return_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:61 [ mul8u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:66 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ main::center_dist#0 ] ] with [ zp ZP_WORD:45 [ startProcessing::center_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:55 [ getCharToProcess::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:57 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:59 [ getCharToProcess::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:76 [ processChars::$3 ] ] with [ zp ZP_WORD:80 [ processChars::$23 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ processChars::$4 ] ] with [ zp ZP_WORD:84 [ processChars::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ processChars::$7 ] ] with [ zp ZP_WORD:90 [ processChars::$26 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:92 [ processChars::$8 ] ] with [ zp ZP_WORD:94 [ processChars::$9 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 ] ] with [ zp ZP_WORD:41 [ main::center_dist#0 startProcessing::center_dist#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp ZP_WORD:63 [ initSquareTables::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 ] ] with [ zp ZP_WORD:68 [ initSquareTables::$14 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:57 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:76 [ processChars::$3 processChars::$23 ] ] with [ zp ZP_WORD:82 [ processChars::$4 processChars::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ processChars::$7 processChars::$26 ] ] with [ zp ZP_WORD:92 [ processChars::$8 processChars::$9 ] ] - score: 1 +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::src#2 main::src#1 ] +Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] +Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] +Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:9 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:10 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Allocated (was zp ZP_WORD:13) zp ZP_WORD:11 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +Allocated (was zp ZP_BYTE:15) zp ZP_BYTE:13 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:14 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Allocated (was zp ZP_WORD:17) zp ZP_WORD:15 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 startProcessing::center_dist#0 ] +Allocated (was zp ZP_BYTE:19) zp ZP_BYTE:17 [ initSquareTables::x#2 initSquareTables::x#1 ] +Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:18 [ initSquareTables::y#2 initSquareTables::y#1 ] +Allocated (was zp ZP_WORD:26) zp ZP_WORD:19 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] +Allocated (was zp ZP_WORD:28) zp ZP_WORD:21 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +Allocated (was zp ZP_BYTE:43) zp ZP_BYTE:23 [ startProcessing::center_x#0 ] +Allocated (was zp ZP_BYTE:44) zp ZP_BYTE:24 [ startProcessing::center_y#0 ] +Allocated (was zp ZP_WORD:51) zp ZP_WORD:25 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +Allocated (was zp ZP_WORD:53) zp ZP_WORD:27 [ getCharToProcess::$15 ] +Allocated (was zp ZP_BYTE:74) zp ZP_BYTE:29 [ processChars::processing_x#0 ] +Allocated (was zp ZP_BYTE:75) zp ZP_BYTE:30 [ processChars::processing_y#0 ] +Allocated (was zp ZP_WORD:76) zp ZP_WORD:31 [ processChars::$3 processChars::$23 processChars::$4 processChars::$5 ] +Allocated (was zp ZP_WORD:78) zp ZP_WORD:33 [ processChars::$22 ] +Allocated (was zp ZP_WORD:86) zp ZP_WORD:35 [ processChars::$7 processChars::$26 processChars::$8 processChars::$9 ] +Allocated (was zp ZP_WORD:88) zp ZP_WORD:37 [ processChars::$25 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -4553,6 +4457,7 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 // Distance value meaning not found .const NOT_FOUND = $ffff + .const NUM_PROCESSING = $10 .const RASTER_IRQ_TOP = $30 .const RASTER_IRQ_MIDDLE = $ff //SEG3 @begin @@ -4573,14 +4478,13 @@ bend_from_b1: bend: //SEG10 main main: { - .label sc = 2 - .label src = 4 - .label dst = 6 - .label center_dist = $11 + .label src = 2 + .label dst = 4 + .label center_dist = $f //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + //SEG12 [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + ldy #0 jmp b1 // Init processing array //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -4589,26 +4493,26 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [6] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 -- vbuyy=vbuxx_rol_2 - txa + //SEG16 [6] (byte~) main::$14 ← (byte) main::i#2 << (byte) 2 -- vbuxx=vbuyy_rol_2 + tya asl asl - tay - //SEG17 [7] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) main::$18) ← (byte) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + tax + //SEG17 [7] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$14) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 - sta PROCESSING,y - //SEG18 [8] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$18) ← (byte) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + sta PROCESSING,x + //SEG18 [8] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$14) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 - sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,y - //SEG19 [9] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$18) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuyy=vwuc2 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,x + //SEG19 [9] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$14) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuxx=vwuc2 lda #NOT_FOUND - sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y - //SEG20 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - //SEG21 [11] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #8 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,x + //SEG20 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy + iny + //SEG21 [11] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #NUM_PROCESSING-1+1 bne b1_from_b1 //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: @@ -4619,173 +4523,136 @@ main: { jsr setupRasterIrq //SEG25 [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG26 [14] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 - lda #SCREEN - sta sc+1 - jmp b3 - // Fill screen with some chars - //SEG27 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] - b3_from_b3: - //SEG28 [14] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@3->main::@3#0] -- register_copy - jmp b3 - //SEG29 main::@3 - b3: - //SEG30 [15] (byte~) main::$5 ← < (byte*) main::sc#2 -- vbuaa=_lo_pbuz1 - lda sc - //SEG31 [16] (byte~) main::$6 ← (byte~) main::$5 & (byte) $1f -- vbuaa=vbuaa_band_vbuc1 - and #$1f - //SEG32 [17] (byte~) main::$7 ← (byte) 'a' + (byte~) main::$6 -- vbuaa=vbuc1_plus_vbuaa - clc - adc #'a' - //SEG33 [18] *((byte*) main::sc#2) ← (byte~) main::$7 -- _deref_pbuz1=vbuaa - ldy #0 - sta (sc),y - //SEG34 [19] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 - inc sc - bne !+ - inc sc+1 - !: - //SEG35 [20] if((byte*) main::sc#1!=(const byte*) SCREEN#0+(word) $3e7+(byte) 1) goto main::@3 -- pbuz1_neq_pbuc1_then_la1 - lda sc+1 - cmp #>SCREEN+$3e7+1 - bne b3_from_b3 - lda sc - cmp #main::@4] - b4_from_b3: - //SEG37 [21] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main::@3->main::@4#0] -- pbuz1=pbuc1 + //SEG26 [14] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 lda #SCREEN_COPY sta dst+1 - //SEG38 [21] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main::@3->main::@4#1] -- pbuz1=pbuc1 + //SEG27 [14] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #SCREEN sta src+1 - jmp b4 + jmp b3 // Copy screen to screen copy - //SEG39 [21] phi from main::@4 to main::@4 [phi:main::@4->main::@4] - b4_from_b4: - //SEG40 [21] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@4->main::@4#0] -- register_copy - //SEG41 [21] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@4->main::@4#1] -- register_copy - jmp b4 - //SEG42 main::@4 - b4: - //SEG43 [22] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG28 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + b3_from_b3: + //SEG29 [14] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG30 [14] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@3->main::@3#1] -- register_copy + jmp b3 + //SEG31 main::@3 + b3: + //SEG32 [15] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y ldy #0 sta (dst),y - //SEG44 [23] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 + //SEG33 [16] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: - //SEG45 [24] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 + //SEG34 [17] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG46 [25] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e7) goto main::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG35 [18] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@3 -- pbuz1_neq_pbuc1_then_la1 lda src+1 - cmp #>SCREEN+$3e7 - bne b4_from_b4 + cmp #>SCREEN+$3e8 + bne b3_from_b3 lda src - cmp #main::@5] - b5_from_b4: - jmp b5 - //SEG48 main::@5 - b5: - //SEG49 [27] call initSquareTables - //SEG50 [86] phi from main::@5 to initSquareTables [phi:main::@5->initSquareTables] - initSquareTables_from_b5: + cmp #main::@4] + b4_from_b3: + jmp b4 + //SEG37 main::@4 + b4: + //SEG38 [20] call initSquareTables + //SEG39 [79] phi from main::@4 to initSquareTables [phi:main::@4->initSquareTables] + initSquareTables_from_b4: jsr initSquareTables - //SEG51 [28] phi from main::@5 main::@7 to main::@6 [phi:main::@5/main::@7->main::@6] - b6_from_b5: - b6_from_b7: - jmp b6 + //SEG40 [21] phi from main::@4 main::@6 to main::@5 [phi:main::@4/main::@6->main::@5] + b5_from_b4: + b5_from_b6: + jmp b5 // Main loop - //SEG52 main::@6 - b6: - //SEG53 [29] call getCenterChar - //SEG54 [58] phi from main::@6 to getCenterChar [phi:main::@6->getCenterChar] - getCenterChar_from_b6: - jsr getCenterChar - //SEG55 [30] (byte) getCenterChar::return_x#0 ← (byte) getCenterChar::return_x#1 -- vbuxx=vbuz1 - ldx getCenterChar.return_x - //SEG56 [31] (byte) getCenterChar::return_y#0 ← (byte) getCenterChar::return_y#1 -- vbuyy=vbuz1 - ldy getCenterChar.return_y - //SEG57 [32] (word) getCenterChar::return_dist#0 ← (word) getCenterChar::return_dist#1 - jmp b9 - //SEG58 main::@9 - b9: - //SEG59 [33] (byte) main::center_x#0 ← (byte) getCenterChar::return_x#0 - //SEG60 [34] (byte) main::center_y#0 ← (byte) getCenterChar::return_y#0 - //SEG61 [35] (word) main::center_dist#0 ← (word) getCenterChar::return_dist#0 - //SEG62 [36] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@7 -- vwuz1_neq_vwuc1_then_la1 + //SEG41 main::@5 + b5: + //SEG42 [22] call getCharToProcess + //SEG43 [51] phi from main::@5 to getCharToProcess [phi:main::@5->getCharToProcess] + getCharToProcess_from_b5: + jsr getCharToProcess + //SEG44 [23] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuyy=vbuz1 + ldy getCharToProcess.return_x + //SEG45 [24] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuxx=vbuz1 + ldx getCharToProcess.return_y + //SEG46 [25] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + jmp b8 + //SEG47 main::@8 + b8: + //SEG48 [26] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + //SEG49 [27] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + //SEG50 [28] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + //SEG51 [29] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@6 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND - bne b7 + bne b6 lda center_dist cmp #startProcessing] - startProcessing_from_b7: + //SEG53 [30] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc SCREEN+$3e7 + jmp b7 + //SEG54 main::@6 + b6: + //SEG55 [31] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 -- vbuz1=vbuyy + sty startProcessing.center_x + //SEG56 [32] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 -- vbuz1=vbuxx + stx startProcessing.center_y + //SEG57 [33] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 + //SEG58 [34] call startProcessing + //SEG59 [35] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] + startProcessing_from_b6: jsr startProcessing - jmp b6_from_b7 + jmp b5_from_b6 } -//SEG71 startProcessing +//SEG60 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($19) center_x, byte zeropage($1a) center_y, word zeropage($11) center_dist) +// startProcessing(byte zeropage($17) center_x, byte zeropage($18) center_y, word zeropage($f) center_dist) startProcessing: { - .label center_x = $19 - .label center_y = $1a - .label center_dist = $11 - .label freeIdx = 8 - //SEG72 [43] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + .label center_x = $17 + .label center_y = $18 + .label center_dist = $f + .label freeIdx = 6 + //SEG61 [36] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] b1_from_startProcessing: - //SEG73 [43] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 + //SEG62 [36] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 lda #$ff sta freeIdx jmp b1 - //SEG74 startProcessing::@1 + //SEG63 startProcessing::@1 b1: - //SEG75 [44] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG64 [37] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] b2_from_b1: - //SEG76 [44] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuxx=vbuc1 + //SEG65 [37] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG77 [44] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG66 [37] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] b2_from_b3: - //SEG78 [44] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG67 [37] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp b2 - //SEG79 startProcessing::@2 + //SEG68 startProcessing::@2 b2: - //SEG80 [45] (byte~) startProcessing::$4 ← (byte) startProcessing::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG69 [38] (byte~) startProcessing::$5 ← (byte) startProcessing::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG81 [46] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$4)!=(const word) NOT_FOUND#0) goto startProcessing::@3 -- pwuc1_derefidx_vbuaa_neq_vwuc2_then_la1 + //SEG70 [39] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5)!=(const word) NOT_FOUND#0) goto startProcessing::@3 -- pwuc1_derefidx_vbuaa_neq_vwuc2_then_la1 tay lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y cmp #>NOT_FOUND @@ -4793,132 +4660,132 @@ startProcessing: { lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y cmp #startProcessing::@4] + //SEG71 [40] phi from startProcessing::@2 startProcessing::@7 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4] b4_from_b2: b4_from_b7: - //SEG83 [47] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4#0] -- register_copy + //SEG72 [40] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4#0] -- register_copy jmp b4 - //SEG84 startProcessing::@4 + //SEG73 startProcessing::@4 b4: - //SEG85 [48] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6 -- vbuxx_eq_vbuc1_then_la1 + //SEG74 [41] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6 -- vbuxx_eq_vbuc1_then_la1 cpx #$ff beq b6 jmp b5 - //SEG86 startProcessing::@5 + //SEG75 startProcessing::@5 b5: - //SEG87 [49] (byte~) startProcessing::$5 ← (byte) startProcessing::freeIdx#2 << (byte) 2 -- vbuxx=vbuxx_rol_2 + //SEG76 [42] (byte~) startProcessing::$6 ← (byte) startProcessing::freeIdx#2 << (byte) 2 -- vbuxx=vbuxx_rol_2 txa asl asl tax - //SEG88 [50] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_x#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG77 [43] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda center_x sta PROCESSING,x - //SEG89 [51] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$5) ← (byte) startProcessing::center_y#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG78 [44] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda center_y sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,x - //SEG90 [52] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5) ← (word) startProcessing::center_dist#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG79 [45] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda center_dist sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,x lda center_dist+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,x jmp breturn - //SEG91 startProcessing::@return + //SEG80 startProcessing::@return breturn: - //SEG92 [53] return + //SEG81 [46] return rts - //SEG93 startProcessing::@6 + //SEG82 startProcessing::@6 b6: - //SEG94 [54] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuxx + //SEG83 [47] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuxx stx freeIdx - //SEG95 [43] phi from startProcessing::@6 to startProcessing::@1 [phi:startProcessing::@6->startProcessing::@1] + //SEG84 [36] phi from startProcessing::@6 to startProcessing::@1 [phi:startProcessing::@6->startProcessing::@1] b1_from_b6: - //SEG96 [43] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@6->startProcessing::@1#0] -- register_copy + //SEG85 [36] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@6->startProcessing::@1#0] -- register_copy jmp b1 - //SEG97 startProcessing::@3 + //SEG86 startProcessing::@3 b3: - //SEG98 [55] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuxx=_inc_vbuxx + //SEG87 [48] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuxx=_inc_vbuxx inx - //SEG99 [56] if((byte) startProcessing::i#1!=(byte) 8) goto startProcessing::@2 -- vbuxx_neq_vbuc1_then_la1 - cpx #8 + //SEG88 [49] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #NUM_PROCESSING-1+1 bne b2_from_b3 jmp b7 - //SEG100 startProcessing::@7 + //SEG89 startProcessing::@7 b7: - //SEG101 [57] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuxx=vbuz1 + //SEG90 [50] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuxx=vbuz1 ldx freeIdx jmp b4_from_b7 } -//SEG102 getCenterChar +//SEG91 getCharToProcess // Find the non-space char closest to the center of the screen // If no non-space char is found the distance will be 0xffff -getCenterChar: { - .label _9 = $1b - .label _10 = $1b - .label _11 = $1b - .label return_dist = $11 - .label x = $c - .label dist = $11 - .label screen_line = 9 - .label y = $b - .label return_x = $f - .label return_y = $10 - .label closest_dist = $d - .label closest_x = $f - .label closest_y = $10 - .label _15 = $1d - .label _16 = $1b - //SEG103 [59] phi from getCenterChar to getCenterChar::@1 [phi:getCenterChar->getCenterChar::@1] - b1_from_getCenterChar: - //SEG104 [59] phi (byte) getCenterChar::closest_y#9 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#0] -- vbuz1=vbuc1 +getCharToProcess: { + .label _9 = $19 + .label _10 = $19 + .label _11 = $19 + .label return_dist = $f + .label x = $a + .label dist = $f + .label screen_line = 7 + .label y = 9 + .label return_x = $d + .label return_y = $e + .label closest_dist = $b + .label closest_x = $d + .label closest_y = $e + .label _15 = $1b + .label _16 = $19 + //SEG92 [52] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + b1_from_getCharToProcess: + //SEG93 [52] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG105 [59] phi (byte) getCenterChar::closest_x#9 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#1] -- vbuz1=vbuc1 + //SEG94 [52] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta closest_x - //SEG106 [59] phi (word) getCenterChar::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCenterChar->getCenterChar::@1#2] -- vwuz1=vwuc1 + //SEG95 [52] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 lda #NOT_FOUND sta closest_dist+1 - //SEG107 [59] phi (byte) getCenterChar::y#7 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#3] -- vbuz1=vbuc1 + //SEG96 [52] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG108 [59] phi (byte*) getCenterChar::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCenterChar->getCenterChar::@1#4] -- pbuz1=pbuc1 + //SEG97 [52] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 lda #SCREEN_COPY sta screen_line+1 jmp b1 - //SEG109 getCenterChar::@1 + //SEG98 getCharToProcess::@1 b1: - //SEG110 [60] phi from getCenterChar::@1 to getCenterChar::@2 [phi:getCenterChar::@1->getCenterChar::@2] + //SEG99 [53] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] b2_from_b1: - //SEG111 [60] phi (byte) getCenterChar::closest_y#7 = (byte) getCenterChar::closest_y#9 [phi:getCenterChar::@1->getCenterChar::@2#0] -- register_copy - //SEG112 [60] phi (byte) getCenterChar::closest_x#7 = (byte) getCenterChar::closest_x#9 [phi:getCenterChar::@1->getCenterChar::@2#1] -- register_copy - //SEG113 [60] phi (word) getCenterChar::closest_dist#2 = (word) getCenterChar::closest_dist#8 [phi:getCenterChar::@1->getCenterChar::@2#2] -- register_copy - //SEG114 [60] phi (byte) getCenterChar::x#2 = (byte) 0 [phi:getCenterChar::@1->getCenterChar::@2#3] -- vbuz1=vbuc1 + //SEG100 [53] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG101 [53] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG102 [53] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG103 [53] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG115 getCenterChar::@2 + //SEG104 getCharToProcess::@2 b2: - //SEG116 [61] if(*((byte*) getCenterChar::screen_line#4 + (byte) getCenterChar::x#2)==(byte) ' ') goto getCenterChar::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG105 [54] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 ldy x lda (screen_line),y cmp #' ' beq b11 jmp b4 - //SEG117 getCenterChar::@4 + //SEG106 getCharToProcess::@4 b4: - //SEG118 [62] (byte~) getCenterChar::$13 ← (byte) getCenterChar::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG107 [55] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda x asl tax - //SEG119 [63] (byte~) getCenterChar::$14 ← (byte) getCenterChar::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG108 [56] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG120 [64] (word) getCenterChar::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCenterChar::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCenterChar::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa + //SEG109 [57] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa tay lda SQUARES_X,x clc @@ -4927,7 +4794,7 @@ getCenterChar: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG121 [65] if((word) getCenterChar::dist#0>=(word) getCenterChar::closest_dist#2) goto getCenterChar::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG110 [58] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 lda closest_dist+1 cmp dist+1 bne !+ @@ -4937,34 +4804,34 @@ getCenterChar: { !: bcc b12 jmp b5 - //SEG122 getCenterChar::@5 + //SEG111 getCharToProcess::@5 b5: - //SEG123 [66] (byte~) getCenterChar::return_x#7 ← (byte) getCenterChar::x#2 -- vbuz1=vbuz2 + //SEG112 [59] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG124 [67] (byte~) getCenterChar::return_y#7 ← (byte) getCenterChar::y#7 -- vbuz1=vbuz2 + //SEG113 [60] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG125 [68] phi from getCenterChar::@11 getCenterChar::@12 getCenterChar::@5 to getCenterChar::@3 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3] + //SEG114 [61] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] b3_from_b11: b3_from_b12: b3_from_b5: - //SEG126 [68] phi (byte) getCenterChar::return_y#1 = (byte) getCenterChar::closest_y#7 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#0] -- register_copy - //SEG127 [68] phi (byte) getCenterChar::return_x#1 = (byte) getCenterChar::closest_x#7 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#1] -- register_copy - //SEG128 [68] phi (word) getCenterChar::return_dist#1 = (word~) getCenterChar::return_dist#5 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#2] -- register_copy + //SEG115 [61] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG116 [61] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG117 [61] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy jmp b3 - //SEG129 getCenterChar::@3 + //SEG118 getCharToProcess::@3 b3: - //SEG130 [69] (byte) getCenterChar::x#1 ← ++ (byte) getCenterChar::x#2 -- vbuz1=_inc_vbuz1 + //SEG119 [62] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG131 [70] if((byte) getCenterChar::x#1!=(byte) $28) goto getCenterChar::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG120 [63] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 jmp b6 - //SEG132 getCenterChar::@6 + //SEG121 getCharToProcess::@6 b6: - //SEG133 [71] (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG122 [64] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc screen_line @@ -4972,16 +4839,16 @@ getCenterChar: { bcc !+ inc screen_line+1 !: - //SEG134 [72] (byte) getCenterChar::y#1 ← ++ (byte) getCenterChar::y#7 -- vbuz1=_inc_vbuz1 + //SEG123 [65] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG135 [73] if((byte) getCenterChar::y#1!=(byte) $19) goto getCenterChar::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG124 [66] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 jmp b7 - //SEG136 getCenterChar::@7 + //SEG125 getCharToProcess::@7 b7: - //SEG137 [74] if((word) getCenterChar::return_dist#1==(const word) NOT_FOUND#0) goto getCenterChar::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG126 [67] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 lda return_dist cmp #SCREEN_COPY sta _11+1 - //SEG144 [80] *((byte*~) getCenterChar::$11 + (byte) getCenterChar::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG133 [73] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy return_x sta (_11),y jmp breturn - //SEG145 getCenterChar::@return + //SEG134 getCharToProcess::@return breturn: - //SEG146 [81] return + //SEG135 [74] return rts - //SEG147 getCenterChar::@9 + //SEG136 getCharToProcess::@9 b9: - //SEG148 [82] (word~) getCenterChar::closest_dist#10 ← (word) getCenterChar::return_dist#1 -- vwuz1=vwuz2 + //SEG137 [75] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist sta closest_dist lda return_dist+1 sta closest_dist+1 - //SEG149 [59] phi from getCenterChar::@9 to getCenterChar::@1 [phi:getCenterChar::@9->getCenterChar::@1] + //SEG138 [52] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] b1_from_b9: - //SEG150 [59] phi (byte) getCenterChar::closest_y#9 = (byte) getCenterChar::return_y#1 [phi:getCenterChar::@9->getCenterChar::@1#0] -- register_copy - //SEG151 [59] phi (byte) getCenterChar::closest_x#9 = (byte) getCenterChar::return_x#1 [phi:getCenterChar::@9->getCenterChar::@1#1] -- register_copy - //SEG152 [59] phi (word) getCenterChar::closest_dist#8 = (word~) getCenterChar::closest_dist#10 [phi:getCenterChar::@9->getCenterChar::@1#2] -- register_copy - //SEG153 [59] phi (byte) getCenterChar::y#7 = (byte) getCenterChar::y#1 [phi:getCenterChar::@9->getCenterChar::@1#3] -- register_copy - //SEG154 [59] phi (byte*) getCenterChar::screen_line#4 = (byte*) getCenterChar::screen_line#1 [phi:getCenterChar::@9->getCenterChar::@1#4] -- register_copy + //SEG139 [52] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG140 [52] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG141 [52] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG142 [52] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG143 [52] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG155 getCenterChar::@10 + //SEG144 getCharToProcess::@10 b10: - //SEG156 [83] (word~) getCenterChar::closest_dist#12 ← (word) getCenterChar::return_dist#1 -- vwuz1=vwuz2 + //SEG145 [76] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist sta closest_dist lda return_dist+1 sta closest_dist+1 - //SEG157 [60] phi from getCenterChar::@10 to getCenterChar::@2 [phi:getCenterChar::@10->getCenterChar::@2] + //SEG146 [53] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] b2_from_b10: - //SEG158 [60] phi (byte) getCenterChar::closest_y#7 = (byte) getCenterChar::return_y#1 [phi:getCenterChar::@10->getCenterChar::@2#0] -- register_copy - //SEG159 [60] phi (byte) getCenterChar::closest_x#7 = (byte) getCenterChar::return_x#1 [phi:getCenterChar::@10->getCenterChar::@2#1] -- register_copy - //SEG160 [60] phi (word) getCenterChar::closest_dist#2 = (word~) getCenterChar::closest_dist#12 [phi:getCenterChar::@10->getCenterChar::@2#2] -- register_copy - //SEG161 [60] phi (byte) getCenterChar::x#2 = (byte) getCenterChar::x#1 [phi:getCenterChar::@10->getCenterChar::@2#3] -- register_copy + //SEG147 [53] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG148 [53] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG149 [53] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG150 [53] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG162 getCenterChar::@12 + //SEG151 getCharToProcess::@12 b12: - //SEG163 [84] (word~) getCenterChar::return_dist#6 ← (word) getCenterChar::closest_dist#2 -- vwuz1=vwuz2 + //SEG152 [77] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist lda closest_dist+1 sta return_dist+1 jmp b3_from_b12 - //SEG164 getCenterChar::@11 + //SEG153 getCharToProcess::@11 b11: - //SEG165 [85] (word~) getCenterChar::return_dist#5 ← (word) getCenterChar::closest_dist#2 -- vwuz1=vwuz2 + //SEG154 [78] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist lda closest_dist+1 sta return_dist+1 jmp b3_from_b11 } -//SEG166 initSquareTables +//SEG155 initSquareTables // initialize SQUARES table initSquareTables: { - .label _6 = $15 - .label _14 = $15 - .label x = $13 - .label y = $14 - //SEG167 [87] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + .label _6 = $13 + .label _14 = $13 + .label x = $11 + .label y = $12 + //SEG156 [80] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] b1_from_initSquareTables: - //SEG168 [87] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + //SEG157 [80] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG169 [87] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG158 [80] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] b1_from_b9: - //SEG170 [87] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG159 [80] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy jmp b1 - //SEG171 initSquareTables::@1 + //SEG160 initSquareTables::@1 b1: - //SEG172 [88] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG161 [81] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 jmp b3 - //SEG173 initSquareTables::@3 + //SEG162 initSquareTables::@3 b3: - //SEG174 [89] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG163 [82] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 lda x sec sbc #$14 - //SEG175 [90] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG164 [83] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] b4_from_b2: b4_from_b3: - //SEG176 [90] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG165 [83] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy jmp b4 - //SEG177 initSquareTables::@4 + //SEG166 initSquareTables::@4 b4: - //SEG178 [91] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG167 [84] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG179 [92] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG180 [93] call mul8u - //SEG181 [116] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG168 [85] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + //SEG169 [86] call mul8u + //SEG170 [109] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] mul8u_from_b4: - //SEG182 [116] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG183 [116] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //SEG171 [109] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG172 [109] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG184 [94] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG173 [87] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b9 - //SEG185 initSquareTables::@9 + //SEG174 initSquareTables::@9 b9: - //SEG186 [95] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG187 [96] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG175 [88] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG176 [89] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG188 [97] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG177 [90] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda _6 sta SQUARES_X,y lda _6+1 sta SQUARES_X+1,y - //SEG189 [98] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG178 [91] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG190 [99] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG179 [92] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1_from_b9 - //SEG191 [100] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG180 [93] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] b5_from_b9: - //SEG192 [100] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG181 [93] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG193 [100] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG182 [93] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] b5_from_b10: - //SEG194 [100] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG183 [93] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy jmp b5 - //SEG195 initSquareTables::@5 + //SEG184 initSquareTables::@5 b5: - //SEG196 [101] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG185 [94] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 jmp b7 - //SEG197 initSquareTables::@7 + //SEG186 initSquareTables::@7 b7: - //SEG198 [102] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG187 [95] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 lda y sec sbc #$c - //SEG199 [103] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG188 [96] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] b8_from_b6: b8_from_b7: - //SEG200 [103] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG189 [96] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy jmp b8 - //SEG201 initSquareTables::@8 + //SEG190 initSquareTables::@8 b8: - //SEG202 [104] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG191 [97] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG203 [105] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG204 [106] call mul8u - //SEG205 [116] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG192 [98] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + //SEG193 [99] call mul8u + //SEG194 [109] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] mul8u_from_b8: - //SEG206 [116] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG207 [116] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //SEG195 [109] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG196 [109] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG208 [107] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG197 [100] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b10 - //SEG209 initSquareTables::@10 + //SEG198 initSquareTables::@10 b10: - //SEG210 [108] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG211 [109] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG199 [101] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG200 [102] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG212 [110] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG201 [103] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda _14 sta SQUARES_Y,y lda _14+1 sta SQUARES_Y+1,y - //SEG213 [111] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG202 [104] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG214 [112] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG203 [105] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5_from_b10 jmp breturn - //SEG215 initSquareTables::@return + //SEG204 initSquareTables::@return breturn: - //SEG216 [113] return + //SEG205 [106] return rts - //SEG217 initSquareTables::@6 + //SEG206 initSquareTables::@6 b6: - //SEG218 [114] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG207 [107] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8_from_b6 - //SEG219 initSquareTables::@2 + //SEG208 initSquareTables::@2 b2: - //SEG220 [115] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG209 [108] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4_from_b2 } -//SEG221 mul8u +//SEG210 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { - .label mb = $17 - .label res = $15 - .label return = $15 - //SEG222 [117] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + .label mb = $15 + .label res = $13 + .label return = $13 + //SEG211 [110] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG223 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG224 [117] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG212 [110] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG213 [110] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG225 [117] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG214 [110] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG226 mul8u::@1 + //SEG215 mul8u::@1 b1: - //SEG227 [118] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG216 [111] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG228 mul8u::@return + //SEG217 mul8u::@return breturn: - //SEG229 [119] return + //SEG218 [112] return rts - //SEG230 mul8u::@2 + //SEG219 mul8u::@2 b2: - //SEG231 [120] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG220 [113] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG232 [121] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG221 [114] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG233 mul8u::@4 + //SEG222 mul8u::@4 b4: - //SEG234 [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG223 [115] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5282,137 +5149,137 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG235 [123] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG224 [116] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG236 [123] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG225 [116] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG237 mul8u::@3 + //SEG226 mul8u::@3 b3: - //SEG238 [124] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG227 [117] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG239 [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG228 [118] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG240 [117] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG229 [110] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG241 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG242 [117] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG243 [117] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG230 [110] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG231 [110] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG232 [110] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG244 setupRasterIrq +//SEG233 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG245 asm { sei } + //SEG234 asm { sei } sei - //SEG246 [127] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG235 [120] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG247 [128] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG236 [121] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG248 [129] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG237 [122] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT jmp b1 - //SEG249 setupRasterIrq::@1 + //SEG238 setupRasterIrq::@1 b1: - //SEG250 [130] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG239 [123] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL jmp b2 - //SEG251 setupRasterIrq::@2 + //SEG240 setupRasterIrq::@2 b2: - //SEG252 [131] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG241 [124] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG253 [132] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG242 [125] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG254 [133] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG243 [126] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG255 asm { cli } + //SEG244 asm { cli } cli jmp breturn - //SEG256 setupRasterIrq::@return + //SEG245 setupRasterIrq::@return breturn: - //SEG257 [135] return + //SEG246 [128] return rts } -//SEG258 irqBottom +//SEG247 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - //SEG259 entry interrupt(HARDWARE_ALL) + //SEG248 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG260 [137] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG249 [130] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] b1_from_irqBottom: - //SEG261 [137] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 + //SEG250 [130] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG262 [137] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG251 [130] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] b1_from_b1: - //SEG263 [137] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG252 [130] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy jmp b1 - //SEG264 irqBottom::@1 + //SEG253 irqBottom::@1 b1: - //SEG265 [138] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx + //SEG254 [131] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx inx - //SEG266 [139] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG255 [132] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1_from_b1 jmp b2 - //SEG267 irqBottom::@2 + //SEG256 irqBottom::@2 b2: - //SEG268 [140] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG257 [133] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG269 [141] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG258 [134] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG270 [142] call processChars - //SEG271 [149] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG259 [135] call processChars + //SEG260 [142] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] processChars_from_b2: jsr processChars jmp b3 - //SEG272 irqBottom::@3 + //SEG261 irqBottom::@3 b3: - //SEG273 [143] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG262 [136] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG274 [144] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG263 [137] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG275 [145] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG264 [138] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG276 [146] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG265 [139] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG277 [147] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG266 [140] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG278 irqBottom::@return + //SEG267 irqBottom::@return breturn: - //SEG279 [148] return - exit interrupt(HARDWARE_ALL) + //SEG268 [141] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5421,37 +5288,37 @@ irqBottom: { ldy #00 rti } -//SEG280 processChars +//SEG269 processChars // Process any chars in the PROCESSING array processChars: { - .label _2 = $21 - .label _3 = $21 - .label _4 = $21 - .label _6 = $25 - .label _7 = $25 - .label _8 = $25 - .label processing_x = $1f - .label processing_y = $20 - .label _21 = $23 + .label _3 = $1f + .label _4 = $1f + .label _5 = $1f + .label _7 = $23 + .label _8 = $23 + .label _9 = $23 + .label processing_x = $1d + .label processing_y = $1e .label _22 = $21 - .label _24 = $27 + .label _23 = $1f .label _25 = $25 - //SEG281 [150] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + .label _26 = $23 + //SEG270 [143] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] b1_from_processChars: - //SEG282 [150] phi (byte) processChars::i#2 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuxx=vbuc1 + //SEG271 [143] phi (byte) processChars::i#2 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG283 [150] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG272 [143] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] b1_from_b2: - //SEG284 [150] phi (byte) processChars::i#2 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG273 [143] phi (byte) processChars::i#2 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy jmp b1 - //SEG285 processChars::@1 + //SEG274 processChars::@1 b1: - //SEG286 [151] (byte~) processChars::$13 ← (byte) processChars::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG275 [144] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG287 [152] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$13)==(const word) NOT_FOUND#0) goto processChars::@2 -- pwuc1_derefidx_vbuaa_eq_vwuc2_then_la1 + //SEG276 [145] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$14)==(const word) NOT_FOUND#0) goto processChars::@2 -- pwuc1_derefidx_vbuaa_eq_vwuc2_then_la1 tay lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y cmp #COLS - sta _4+1 - //SEG297 [161] *((byte*~) processChars::$4 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 -- pbuz1_derefidx_vbuz2=vbuc1 + sta _5+1 + //SEG286 [154] *((byte*~) processChars::$5 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 -- pbuz1_derefidx_vbuz2=vbuc1 lda #WHITE ldy processing_x - sta (_4),y - //SEG298 [162] (word~) processChars::$6 ← (word)(byte) processChars::processing_y#0 -- vwuz1=_word_vbuz2 + sta (_5),y + //SEG287 [155] (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0 -- vwuz1=_word_vbuz2 lda processing_y - sta _6 + sta _7 lda #0 - sta _6+1 - //SEG299 [163] (word) processChars::$24 ← (word~) processChars::$6 << (byte) 2 -- vwuz1=vwuz2_rol_2 - lda _6 + sta _7+1 + //SEG288 [156] (word) processChars::$25 ← (word~) processChars::$7 << (byte) 2 -- vwuz1=vwuz2_rol_2 + lda _7 asl - sta _24 - lda _6+1 - rol - sta _24+1 - asl _24 - rol _24+1 - //SEG300 [164] (word) processChars::$25 ← (word) processChars::$24 + (word~) processChars::$6 -- vwuz1=vwuz2_plus_vwuz1 - lda _25 - clc - adc _24 sta _25 - lda _25+1 - adc _24+1 + lda _7+1 + rol sta _25+1 - //SEG301 [165] (word~) processChars::$7 ← (word) processChars::$25 << (byte) 3 -- vwuz1=vwuz1_rol_3 - asl _7 - rol _7+1 - asl _7 - rol _7+1 - asl _7 - rol _7+1 - //SEG302 [166] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (word~) processChars::$7 -- pbuz1=pbuc1_plus_vwuz1 + asl _25 + rol _25+1 + //SEG289 [157] (word) processChars::$26 ← (word) processChars::$25 + (word~) processChars::$7 -- vwuz1=vwuz2_plus_vwuz1 + lda _26 clc - lda _8 + adc _25 + sta _26 + lda _26+1 + adc _25+1 + sta _26+1 + //SEG290 [158] (word~) processChars::$8 ← (word) processChars::$26 << (byte) 3 -- vwuz1=vwuz1_rol_3 + asl _8 + rol _8+1 + asl _8 + rol _8+1 + asl _8 + rol _8+1 + //SEG291 [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (word~) processChars::$8 -- pbuz1=pbuc1_plus_vwuz1 + clc + lda _9 adc #SCREEN - sta _8+1 - //SEG303 [167] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + sta _9+1 + //SEG292 [160] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 ldy processing_x - lda (_8),y + lda (_9),y cmp #' ' beq b3 jmp b6 - //SEG304 processChars::@6 + //SEG293 processChars::@6 b6: - //SEG305 [168] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 -- pbuz1_derefidx_vbuz2_gt_vbuc1_then_la1 + //SEG294 [161] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 -- pbuz1_derefidx_vbuz2_gt_vbuc1_then_la1 ldy processing_x - lda (_8),y + lda (_9),y cmp #' ' beq !+ bcs b4 !: jmp b7 - //SEG306 processChars::@7 + //SEG295 processChars::@7 b7: - //SEG307 [169] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2 + //SEG296 [162] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2 ldy processing_x - lda (_8),y + lda (_9),y clc adc #1 - sta (_8),y + sta (_9),y jmp b2 - //SEG308 processChars::@2 + //SEG297 processChars::@2 b2: - //SEG309 [170] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 -- vbuxx=_inc_vbuxx + //SEG298 [163] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 -- vbuxx=_inc_vbuxx inx - //SEG310 [171] if((byte) processChars::i#1!=(byte) 8) goto processChars::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #8 + //SEG299 [164] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #NUM_PROCESSING-1+1 bne b1_from_b2 jmp breturn - //SEG311 processChars::@return + //SEG300 processChars::@return breturn: - //SEG312 [172] return + //SEG301 [165] return rts - //SEG313 processChars::@4 + //SEG302 processChars::@4 b4: - //SEG314 [173] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz2 + //SEG303 [166] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz2 ldy processing_x - lda (_8),y + lda (_9),y sec sbc #1 - sta (_8),y + sta (_9),y jmp b2 - //SEG315 processChars::@3 + //SEG304 processChars::@3 b3: - //SEG316 [174] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG305 [167] (byte~) processChars::$16 ← (byte) processChars::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG317 [175] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$15) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuaa=vwuc2 + //SEG306 [168] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$16) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuaa=vwuc2 tay lda #irqTop::@1] + //SEG309 [170] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] b1_from_irqTop: - //SEG321 [177] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 + //SEG310 [170] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG322 [177] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG311 [170] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] b1_from_b1: - //SEG323 [177] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG312 [170] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy jmp b1 - //SEG324 irqTop::@1 + //SEG313 irqTop::@1 b1: - //SEG325 [178] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx + //SEG314 [171] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx inx - //SEG326 [179] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG315 [172] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1_from_b1 jmp b2 - //SEG327 irqTop::@2 + //SEG316 irqTop::@2 b2: - //SEG328 [180] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG317 [173] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG329 [181] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG318 [174] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG330 [182] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] + //SEG319 [175] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] b3_from_b2: - //SEG331 [182] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 + //SEG320 [175] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG332 [182] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] + //SEG321 [175] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] b3_from_b3: - //SEG333 [182] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy + //SEG322 [175] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy jmp b3 - //SEG334 irqTop::@3 + //SEG323 irqTop::@3 b3: - //SEG335 [183] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx + //SEG324 [176] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG336 [184] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG325 [177] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3_from_b3 jmp b4 - //SEG337 irqTop::@4 + //SEG326 irqTop::@4 b4: - //SEG338 [185] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG327 [178] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG339 [186] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG328 [179] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG340 [187] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG329 [180] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the middle of the screen lda #RASTER_IRQ_MIDDLE sta RASTER - //SEG341 [188] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG330 [181] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG342 [189] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG331 [182] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG343 irqTop::@return + //SEG332 irqTop::@return breturn: - //SEG344 [190] return - exit interrupt(HARDWARE_ALL) + //SEG333 [183] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -5696,12 +5563,12 @@ irqTop: { } // Copy of the screen used for finding chars to process SCREEN_COPY: .fill $3e8, 0 - // Chars currently being processed in the interrupt - PROCESSING: .fill 4*8, 0 // SQUARES_X[i] = (i-20)*(i-20) SQUARES_X: .fill 2*$28, 0 // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 + // Chars currently being processed in the interrupt + PROCESSING: .fill 4*NUM_PROCESSING, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp b1 @@ -5711,9 +5578,8 @@ Removing instruction jmp b2 Removing instruction jmp b3 Removing instruction jmp b4 Removing instruction jmp b5 -Removing instruction jmp b6 -Removing instruction jmp b9 Removing instruction jmp b8 +Removing instruction jmp b7 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b4 @@ -5773,8 +5639,6 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 Replacing label b3_from_b3 with b3 Replacing label b3_from_b3 with b3 -Replacing label b4_from_b4 with b4 -Replacing label b4_from_b4 with b4 Replacing label b2_from_b3 with b2 Replacing label b4_from_b7 with b4 Replacing label b3_from_b12 with b3 @@ -5795,11 +5659,10 @@ Removing instruction bend_from_b1: Removing instruction b1_from_b1: Removing instruction b2_from_b1: Removing instruction b3_from_b3: -Removing instruction b4_from_b4: +Removing instruction b4_from_b3: +Removing instruction initSquareTables_from_b4: Removing instruction b5_from_b4: -Removing instruction initSquareTables_from_b5: -Removing instruction b6_from_b5: -Removing instruction getCenterChar_from_b6: +Removing instruction getCharToProcess_from_b5: Removing instruction b2_from_b1: Removing instruction b2_from_b3: Removing instruction b4_from_b2: @@ -5827,17 +5690,16 @@ Removing instruction bend: Removing instruction b1_from_main: Removing instruction b2: Removing instruction b3_from_b2: -Removing instruction b4_from_b3: +Removing instruction b4: Removing instruction b5: -Removing instruction b6: -Removing instruction b9: -Removing instruction startProcessing_from_b7: +Removing instruction b8: +Removing instruction startProcessing_from_b6: Removing instruction b1_from_startProcessing: Removing instruction b5: Removing instruction breturn: Removing instruction b1_from_b6: Removing instruction b7: -Removing instruction b1_from_getCenterChar: +Removing instruction b1_from_getCharToProcess: Removing instruction b4: Removing instruction b5: Removing instruction b6: @@ -5878,11 +5740,10 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin -Relabelling long label b6_from_b7 to b2 +Relabelling long label b5_from_b6 to b2 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 Removing instruction jmp b3 -Removing instruction jmp b4 Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp b5 @@ -5899,11 +5760,11 @@ Removing instruction ldy processing_x Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [612] bne b1 to beq -Fixing long branch [219] beq b11 to bne -Fixing long branch [240] beq b12 to bne -Fixing long branch [244] bcc b12 to bcs -Fixing long branch [526] beq b2 to bne +Fixing long branch [590] bne b1 to beq +Fixing long branch [197] beq b11 to bne +Fixing long branch [218] beq b12 to bne +Fixing long branch [222] bcc b12 to bcs +Fixing long branch [504] beq b2 to bne FINAL SYMBOL TABLE (label) @1 @@ -5933,10 +5794,12 @@ FINAL SYMBOL TABLE (const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte) $e (word) NOT_FOUND (const word) NOT_FOUND#0 NOT_FOUND = (word) $ffff +(byte) NUM_PROCESSING +(const byte) NUM_PROCESSING#0 NUM_PROCESSING = (byte) $10 (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST OFFSET_STRUCT_PROCESSINGCHAR_DIST = (byte) 2 (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y OFFSET_STRUCT_PROCESSINGCHAR_Y = (byte) 1 -(struct ProcessingChar[8]) PROCESSING -(const struct ProcessingChar[8]) PROCESSING#0 PROCESSING = { fill( 8, 0) } +(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING +(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 PROCESSING = { fill( NUM_PROCESSING#0, 0) } (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = (byte*) 1 (byte*) PROCPORT_DDR @@ -5966,73 +5829,73 @@ FINAL SYMBOL TABLE (const byte*) VIC_CONTROL#0 VIC_CONTROL = (byte*) 53265 (byte) WHITE (const byte) WHITE#0 WHITE = (byte) 1 -(struct ProcessingChar()) getCenterChar() -(word~) getCenterChar::$10 $10 zp ZP_WORD:27 4.0 -(byte*~) getCenterChar::$11 $11 zp ZP_WORD:27 4.0 -(byte~) getCenterChar::$13 reg byte x 1001.0 -(byte~) getCenterChar::$14 reg byte a 2002.0 -(word) getCenterChar::$15 $15 zp ZP_WORD:29 4.0 -(word) getCenterChar::$16 $16 zp ZP_WORD:27 4.0 -(word~) getCenterChar::$9 $9 zp ZP_WORD:27 3.0 -(label) getCenterChar::@1 -(label) getCenterChar::@10 -(label) getCenterChar::@11 -(label) getCenterChar::@12 -(label) getCenterChar::@2 -(label) getCenterChar::@3 -(label) getCenterChar::@4 -(label) getCenterChar::@5 -(label) getCenterChar::@6 -(label) getCenterChar::@7 -(label) getCenterChar::@8 -(label) getCenterChar::@9 -(label) getCenterChar::@return -(struct ProcessingChar) getCenterChar::closest -(word) getCenterChar::closest_dist -(word~) getCenterChar::closest_dist#10 closest_dist zp ZP_WORD:13 202.0 -(word~) getCenterChar::closest_dist#12 closest_dist zp ZP_WORD:13 2002.0 -(word) getCenterChar::closest_dist#2 closest_dist zp ZP_WORD:13 684.1666666666667 -(word) getCenterChar::closest_dist#8 closest_dist zp ZP_WORD:13 202.0 -(byte) getCenterChar::closest_x -(byte) getCenterChar::closest_x#7 closest_x zp ZP_BYTE:15 388.0 -(byte) getCenterChar::closest_x#9 closest_x zp ZP_BYTE:15 202.0 -(byte) getCenterChar::closest_y -(byte) getCenterChar::closest_y#7 closest_y zp ZP_BYTE:16 388.0 -(byte) getCenterChar::closest_y#9 closest_y zp ZP_BYTE:16 202.0 -(word) getCenterChar::dist -(word) getCenterChar::dist#0 dist zp ZP_WORD:17 750.75 -(struct ProcessingChar) getCenterChar::return -(word) getCenterChar::return_dist -(word) getCenterChar::return_dist#0 return_dist zp ZP_WORD:17 7.333333333333333 -(word) getCenterChar::return_dist#1 return_dist zp ZP_WORD:17 242.23529411764704 -(word~) getCenterChar::return_dist#5 return_dist zp ZP_WORD:17 2002.0 -(word~) getCenterChar::return_dist#6 return_dist zp ZP_WORD:17 2002.0 -(byte) getCenterChar::return_x -(byte) getCenterChar::return_x#0 reg byte x 7.333333333333333 -(byte) getCenterChar::return_x#1 return_x zp ZP_BYTE:15 242.23529411764704 -(byte~) getCenterChar::return_x#7 return_x zp ZP_BYTE:15 1001.0 -(byte) getCenterChar::return_y -(byte) getCenterChar::return_y#0 reg byte y 7.333333333333333 -(byte) getCenterChar::return_y#1 return_y zp ZP_BYTE:16 228.66666666666669 -(byte~) getCenterChar::return_y#7 return_y zp ZP_BYTE:16 2002.0 -(byte*) getCenterChar::screen_line -(byte*) getCenterChar::screen_line#1 screen_line zp ZP_WORD:9 50.5 -(byte*) getCenterChar::screen_line#4 screen_line zp ZP_WORD:9 80.2 -(byte) getCenterChar::x -(byte) getCenterChar::x#1 x zp ZP_BYTE:12 1001.0 -(byte) getCenterChar::x#2 x zp ZP_BYTE:12 455.0 -(byte) getCenterChar::y -(byte) getCenterChar::y#1 y zp ZP_BYTE:11 101.0 -(byte) getCenterChar::y#7 y zp ZP_BYTE:11 137.75 +(struct ProcessingChar()) getCharToProcess() +(word~) getCharToProcess::$10 $10 zp ZP_WORD:25 4.0 +(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:25 4.0 +(byte~) getCharToProcess::$13 reg byte x 1001.0 +(byte~) getCharToProcess::$14 reg byte a 2002.0 +(word) getCharToProcess::$15 $15 zp ZP_WORD:27 4.0 +(word) getCharToProcess::$16 $16 zp ZP_WORD:25 4.0 +(word~) getCharToProcess::$9 $9 zp ZP_WORD:25 3.0 +(label) getCharToProcess::@1 +(label) getCharToProcess::@10 +(label) getCharToProcess::@11 +(label) getCharToProcess::@12 +(label) getCharToProcess::@2 +(label) getCharToProcess::@3 +(label) getCharToProcess::@4 +(label) getCharToProcess::@5 +(label) getCharToProcess::@6 +(label) getCharToProcess::@7 +(label) getCharToProcess::@8 +(label) getCharToProcess::@9 +(label) getCharToProcess::@return +(struct ProcessingChar) getCharToProcess::closest +(word) getCharToProcess::closest_dist +(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:11 202.0 +(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:11 2002.0 +(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:11 684.1666666666667 +(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:11 202.0 +(byte) getCharToProcess::closest_x +(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:13 388.0 +(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:13 202.0 +(byte) getCharToProcess::closest_y +(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:14 388.0 +(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:14 202.0 +(word) getCharToProcess::dist +(word) getCharToProcess::dist#0 dist zp ZP_WORD:15 750.75 +(struct ProcessingChar) getCharToProcess::return +(word) getCharToProcess::return_dist +(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:15 7.333333333333333 +(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:15 242.23529411764704 +(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:15 2002.0 +(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:15 2002.0 +(byte) getCharToProcess::return_x +(byte) getCharToProcess::return_x#0 reg byte y 7.333333333333333 +(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:13 242.23529411764704 +(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:13 1001.0 +(byte) getCharToProcess::return_y +(byte) getCharToProcess::return_y#0 reg byte x 7.333333333333333 +(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:14 228.66666666666669 +(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:14 2002.0 +(byte*) getCharToProcess::screen_line +(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:7 50.5 +(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:7 80.2 +(byte) getCharToProcess::x +(byte) getCharToProcess::x#1 x zp ZP_BYTE:10 1001.0 +(byte) getCharToProcess::x#2 x zp ZP_BYTE:10 455.0 +(byte) getCharToProcess::y +(byte) getCharToProcess::y#1 y zp ZP_BYTE:9 101.0 +(byte) getCharToProcess::y#7 y zp ZP_BYTE:9 137.75 (void()) initSquareTables() (byte~) initSquareTables::$10 reg byte a 22.0 (byte~) initSquareTables::$12 reg byte a 22.0 -(word~) initSquareTables::$14 $14 zp ZP_WORD:21 11.0 +(word~) initSquareTables::$14 $14 zp ZP_WORD:19 11.0 (byte~) initSquareTables::$16 reg byte a 22.0 (byte~) initSquareTables::$17 reg byte a 22.0 (byte~) initSquareTables::$2 reg byte a 22.0 (byte~) initSquareTables::$4 reg byte a 22.0 -(word~) initSquareTables::$6 $6 zp ZP_WORD:21 11.0 +(word~) initSquareTables::$6 $6 zp ZP_WORD:19 11.0 (label) initSquareTables::@1 (label) initSquareTables::@10 (label) initSquareTables::@2 @@ -6045,13 +5908,13 @@ FINAL SYMBOL TABLE (label) initSquareTables::@9 (label) initSquareTables::@return (byte) initSquareTables::x -(byte) initSquareTables::x#1 x zp ZP_BYTE:19 16.5 -(byte) initSquareTables::x#2 x zp ZP_BYTE:19 5.5 +(byte) initSquareTables::x#1 x zp ZP_BYTE:17 16.5 +(byte) initSquareTables::x#2 x zp ZP_BYTE:17 5.5 (byte) initSquareTables::x_dist (byte) initSquareTables::x_dist#0 reg byte a 22.0 (byte) initSquareTables::y -(byte) initSquareTables::y#1 y zp ZP_BYTE:20 16.5 -(byte) initSquareTables::y#2 y zp ZP_BYTE:20 5.5 +(byte) initSquareTables::y#1 y zp ZP_BYTE:18 16.5 +(byte) initSquareTables::y#2 y zp ZP_BYTE:18 5.5 (byte) initSquareTables::y_dist (byte) initSquareTables::y_dist#0 reg byte a 22.0 interrupt(HARDWARE_ALL)(void()) irqBottom() @@ -6075,11 +5938,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 reg byte x 16.5 (byte) irqTop::i1#2 reg byte x 22.0 (void()) main() -(struct ProcessingChar~) main::$11 -(byte~) main::$18 reg byte y 14.666666666666666 -(byte~) main::$5 reg byte a 22.0 -(byte~) main::$6 reg byte a 22.0 -(byte~) main::$7 reg byte a 22.0 +(byte~) main::$14 reg byte x 14.666666666666666 +(struct ProcessingChar~) main::$7 (label) main::@1 (label) main::@2 (label) main::@3 @@ -6088,26 +5948,22 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@6 (label) main::@7 (label) main::@8 -(label) main::@9 (struct ProcessingChar) main::center (word) main::center_dist -(word) main::center_dist#0 center_dist zp ZP_WORD:17 8.25 +(word) main::center_dist#0 center_dist zp ZP_WORD:15 8.25 (byte) main::center_x -(byte) main::center_x#0 reg byte x 5.5 +(byte) main::center_x#0 reg byte y 5.5 (byte) main::center_y -(byte) main::center_y#0 reg byte y 5.5 +(byte) main::center_y#0 reg byte x 5.5 (byte*) main::dst -(byte*) main::dst#1 dst zp ZP_WORD:6 11.0 -(byte*) main::dst#2 dst zp ZP_WORD:6 11.0 +(byte*) main::dst#1 dst zp ZP_WORD:4 11.0 +(byte*) main::dst#2 dst zp ZP_WORD:4 11.0 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 -(byte*) main::sc -(byte*) main::sc#1 sc zp ZP_WORD:2 16.5 -(byte*) main::sc#2 sc zp ZP_WORD:2 8.8 +(byte) main::i#1 reg byte y 16.5 +(byte) main::i#2 reg byte y 6.6000000000000005 (byte*) main::src -(byte*) main::src#1 src zp ZP_WORD:4 11.0 -(byte*) main::src#2 src zp ZP_WORD:4 16.5 +(byte*) main::src#1 src zp ZP_WORD:2 11.0 +(byte*) main::src#2 src zp ZP_WORD:2 16.5 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) (byte~) mul8u::$1 reg byte a 202.0 (label) mul8u::@1 @@ -6125,30 +5981,30 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) mul8u::b#0 reg byte a 22.0 (byte) mul8u::b#1 reg byte a 22.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp ZP_WORD:23 24.0 -(word) mul8u::mb#1 mb zp ZP_WORD:23 202.0 -(word) mul8u::mb#2 mb zp ZP_WORD:23 43.57142857142858 +(word) mul8u::mb#0 mb zp ZP_WORD:21 24.0 +(word) mul8u::mb#1 mb zp ZP_WORD:21 202.0 +(word) mul8u::mb#2 mb zp ZP_WORD:21 43.57142857142858 (word) mul8u::res -(word) mul8u::res#1 res zp ZP_WORD:21 202.0 -(word) mul8u::res#2 res zp ZP_WORD:21 46.42857142857143 -(word) mul8u::res#6 res zp ZP_WORD:21 101.0 +(word) mul8u::res#1 res zp ZP_WORD:19 202.0 +(word) mul8u::res#2 res zp ZP_WORD:19 46.42857142857143 +(word) mul8u::res#6 res zp ZP_WORD:19 101.0 (word) mul8u::return -(word) mul8u::return#2 return zp ZP_WORD:21 22.0 -(word) mul8u::return#3 return zp ZP_WORD:21 22.0 +(word) mul8u::return#2 return zp ZP_WORD:19 22.0 +(word) mul8u::return#3 return zp ZP_WORD:19 22.0 (void()) processChars() -(byte~) processChars::$13 reg byte a 22.0 -(byte~) processChars::$14 reg byte y 16.5 -(byte~) processChars::$15 reg byte a 22.0 -(word~) processChars::$2 $2 zp ZP_WORD:33 16.5 -(word) processChars::$21 $21 zp ZP_WORD:35 22.0 +(byte~) processChars::$14 reg byte a 22.0 +(byte~) processChars::$15 reg byte y 16.5 +(byte~) processChars::$16 reg byte a 22.0 (word) processChars::$22 $22 zp ZP_WORD:33 22.0 -(word) processChars::$24 $24 zp ZP_WORD:39 22.0 +(word) processChars::$23 $23 zp ZP_WORD:31 22.0 (word) processChars::$25 $25 zp ZP_WORD:37 22.0 -(word~) processChars::$3 $3 zp ZP_WORD:33 22.0 -(byte*~) processChars::$4 $4 zp ZP_WORD:33 22.0 -(word~) processChars::$6 $6 zp ZP_WORD:37 16.5 -(word~) processChars::$7 $7 zp ZP_WORD:37 22.0 -(byte*~) processChars::$8 $8 zp ZP_WORD:37 25.666666666666668 +(word) processChars::$26 $26 zp ZP_WORD:35 22.0 +(word~) processChars::$3 $3 zp ZP_WORD:31 16.5 +(word~) processChars::$4 $4 zp ZP_WORD:31 22.0 +(byte*~) processChars::$5 $5 zp ZP_WORD:31 22.0 +(word~) processChars::$7 $7 zp ZP_WORD:35 16.5 +(word~) processChars::$8 $8 zp ZP_WORD:35 22.0 +(byte*~) processChars::$9 $9 zp ZP_WORD:35 25.666666666666668 (label) processChars::@1 (label) processChars::@2 (label) processChars::@3 @@ -6163,9 +6019,9 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingChar) processChars::processing (byte*) processChars::processing_ptr (byte) processChars::processing_x -(byte) processChars::processing_x#0 processing_x zp ZP_BYTE:31 5.866666666666666 +(byte) processChars::processing_x#0 processing_x zp ZP_BYTE:29 5.866666666666666 (byte) processChars::processing_y -(byte) processChars::processing_y#0 processing_y zp ZP_BYTE:32 1.5714285714285714 +(byte) processChars::processing_y#0 processing_y zp ZP_BYTE:30 1.5714285714285714 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -6174,8 +6030,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) -(byte~) startProcessing::$4 reg byte a 2002.0 -(byte~) startProcessing::$5 reg byte x 2.6666666666666665 +(byte~) startProcessing::$5 reg byte a 2002.0 +(byte~) startProcessing::$6 reg byte x 2.6666666666666665 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -6186,78 +6042,74 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) startProcessing::@return (struct ProcessingChar) startProcessing::center (word) startProcessing::center_dist -(word) startProcessing::center_dist#0 center_dist zp ZP_WORD:17 0.8666666666666666 +(word) startProcessing::center_dist#0 center_dist zp ZP_WORD:15 0.8666666666666666 (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:25 0.8666666666666666 +(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:23 0.8666666666666666 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:26 0.8666666666666666 +(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:24 0.8666666666666666 (byte) startProcessing::freeIdx (byte) startProcessing::freeIdx#2 reg byte x 653.0 -(byte) startProcessing::freeIdx#6 freeIdx zp ZP_BYTE:8 33.666666666666664 -(byte~) startProcessing::freeIdx#7 freeIdx zp ZP_BYTE:8 202.0 +(byte) startProcessing::freeIdx#6 freeIdx zp ZP_BYTE:6 33.666666666666664 +(byte~) startProcessing::freeIdx#7 freeIdx zp ZP_BYTE:6 202.0 (byte~) startProcessing::freeIdx#8 reg byte x 202.0 (byte) startProcessing::i (byte) startProcessing::i#1 reg byte x 1501.5 (byte) startProcessing::i#2 reg byte x 1334.6666666666667 -reg byte x [ main::i#2 main::i#1 ] -zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] -zp ZP_WORD:4 [ main::src#2 main::src#1 ] -zp ZP_WORD:6 [ main::dst#2 main::dst#1 ] -zp ZP_BYTE:8 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +reg byte y [ main::i#2 main::i#1 ] +zp ZP_WORD:2 [ main::src#2 main::src#1 ] +zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] +zp ZP_BYTE:6 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] reg byte x [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -zp ZP_WORD:9 [ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] -zp ZP_BYTE:11 [ getCenterChar::y#7 getCenterChar::y#1 ] -zp ZP_BYTE:12 [ getCenterChar::x#2 getCenterChar::x#1 ] -zp ZP_WORD:13 [ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] -zp ZP_BYTE:15 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -zp ZP_BYTE:16 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -zp ZP_WORD:17 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 getCenterChar::return_dist#0 main::center_dist#0 startProcessing::center_dist#0 ] -zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] +zp ZP_WORD:7 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] +zp ZP_BYTE:9 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +zp ZP_BYTE:10 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +zp ZP_WORD:11 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +zp ZP_BYTE:13 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +zp ZP_BYTE:14 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +zp ZP_WORD:15 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 startProcessing::center_dist#0 ] +zp ZP_BYTE:17 [ initSquareTables::x#2 initSquareTables::x#1 ] reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] -zp ZP_BYTE:20 [ initSquareTables::y#2 initSquareTables::y#1 ] +zp ZP_BYTE:18 [ initSquareTables::y#2 initSquareTables::y#1 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -zp ZP_WORD:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] -zp ZP_WORD:23 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +zp ZP_WORD:19 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] +zp ZP_WORD:21 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ irqBottom::i#2 irqBottom::i#1 ] reg byte x [ processChars::i#2 processChars::i#1 ] reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -reg byte y [ main::$18 ] -reg byte a [ main::$5 ] -reg byte a [ main::$6 ] -reg byte a [ main::$7 ] -reg byte x [ getCenterChar::return_x#0 ] -reg byte y [ getCenterChar::return_y#0 ] -reg byte x [ main::center_x#0 ] -reg byte y [ main::center_y#0 ] -zp ZP_BYTE:25 [ startProcessing::center_x#0 ] -zp ZP_BYTE:26 [ startProcessing::center_y#0 ] -reg byte a [ startProcessing::$4 ] -reg byte x [ startProcessing::$5 ] -reg byte x [ getCenterChar::$13 ] -reg byte a [ getCenterChar::$14 ] -zp ZP_WORD:27 [ getCenterChar::$9 getCenterChar::$16 getCenterChar::$10 getCenterChar::$11 ] -zp ZP_WORD:29 [ getCenterChar::$15 ] +reg byte x [ main::$14 ] +reg byte y [ getCharToProcess::return_x#0 ] +reg byte x [ getCharToProcess::return_y#0 ] +reg byte y [ main::center_x#0 ] +reg byte x [ main::center_y#0 ] +zp ZP_BYTE:23 [ startProcessing::center_x#0 ] +zp ZP_BYTE:24 [ startProcessing::center_y#0 ] +reg byte a [ startProcessing::$5 ] +reg byte x [ startProcessing::$6 ] +reg byte x [ getCharToProcess::$13 ] +reg byte a [ getCharToProcess::$14 ] +zp ZP_WORD:25 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +zp ZP_WORD:27 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$13 ] -reg byte y [ processChars::$14 ] -zp ZP_BYTE:31 [ processChars::processing_x#0 ] -zp ZP_BYTE:32 [ processChars::processing_y#0 ] -zp ZP_WORD:33 [ processChars::$2 processChars::$22 processChars::$3 processChars::$4 ] -zp ZP_WORD:35 [ processChars::$21 ] -zp ZP_WORD:37 [ processChars::$6 processChars::$25 processChars::$7 processChars::$8 ] -zp ZP_WORD:39 [ processChars::$24 ] -reg byte a [ processChars::$15 ] +reg byte a [ processChars::$14 ] +reg byte y [ processChars::$15 ] +zp ZP_BYTE:29 [ processChars::processing_x#0 ] +zp ZP_BYTE:30 [ processChars::processing_y#0 ] +zp ZP_WORD:31 [ processChars::$3 processChars::$23 processChars::$4 processChars::$5 ] +zp ZP_WORD:33 [ processChars::$22 ] +zp ZP_WORD:35 [ processChars::$7 processChars::$26 processChars::$8 processChars::$9 ] +zp ZP_WORD:37 [ processChars::$25 ] +reg byte a [ processChars::$16 ] FINAL ASSEMBLER -Score: 213220 +Score: 212675 //SEG0 File Comments // Black Hole at the center of the BASIC screen sucking in any letters @@ -6300,6 +6152,7 @@ Score: 213220 .label SCREEN = $400 // Distance value meaning not found .const NOT_FOUND = $ffff + .const NUM_PROCESSING = $10 .const RASTER_IRQ_TOP = $30 .const RASTER_IRQ_MIDDLE = $ff //SEG3 @begin @@ -6311,184 +6164,150 @@ Score: 213220 //SEG9 @end //SEG10 main main: { - .label sc = 2 - .label src = 4 - .label dst = 6 - .label center_dist = $11 + .label src = 2 + .label dst = 4 + .label center_dist = $f //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG12 [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + //SEG12 [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + ldy #0 // Init processing array //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG15 main::@1 b1: - //SEG16 [6] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 -- vbuyy=vbuxx_rol_2 - txa + //SEG16 [6] (byte~) main::$14 ← (byte) main::i#2 << (byte) 2 -- vbuxx=vbuyy_rol_2 + tya asl asl - tay - //SEG17 [7] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) main::$18) ← (byte) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + tax + //SEG17 [7] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$14) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 - sta PROCESSING,y - //SEG18 [8] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$18) ← (byte) 0 -- pbuc1_derefidx_vbuyy=vbuc2 - sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,y - //SEG19 [9] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$18) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuyy=vwuc2 + sta PROCESSING,x + //SEG18 [8] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$14) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,x + //SEG19 [9] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$14) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuxx=vwuc2 lda #NOT_FOUND - sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y - //SEG20 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - //SEG21 [11] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #8 + sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,x + //SEG20 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy + iny + //SEG21 [11] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #NUM_PROCESSING-1+1 bne b1 //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG23 main::@2 //SEG24 [13] call setupRasterIrq jsr setupRasterIrq //SEG25 [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG26 [14] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 - lda #SCREEN - sta sc+1 - // Fill screen with some chars - //SEG27 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] - //SEG28 [14] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@3->main::@3#0] -- register_copy - //SEG29 main::@3 - b3: - //SEG30 [15] (byte~) main::$5 ← < (byte*) main::sc#2 -- vbuaa=_lo_pbuz1 - lda sc - //SEG31 [16] (byte~) main::$6 ← (byte~) main::$5 & (byte) $1f -- vbuaa=vbuaa_band_vbuc1 - and #$1f - //SEG32 [17] (byte~) main::$7 ← (byte) 'a' + (byte~) main::$6 -- vbuaa=vbuc1_plus_vbuaa - clc - adc #'a' - //SEG33 [18] *((byte*) main::sc#2) ← (byte~) main::$7 -- _deref_pbuz1=vbuaa - ldy #0 - sta (sc),y - //SEG34 [19] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 - inc sc - bne !+ - inc sc+1 - !: - //SEG35 [20] if((byte*) main::sc#1!=(const byte*) SCREEN#0+(word) $3e7+(byte) 1) goto main::@3 -- pbuz1_neq_pbuc1_then_la1 - lda sc+1 - cmp #>SCREEN+$3e7+1 - bne b3 - lda sc - cmp #main::@4] - //SEG37 [21] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main::@3->main::@4#0] -- pbuz1=pbuc1 + //SEG26 [14] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 lda #SCREEN_COPY sta dst+1 - //SEG38 [21] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main::@3->main::@4#1] -- pbuz1=pbuc1 + //SEG27 [14] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #SCREEN sta src+1 // Copy screen to screen copy - //SEG39 [21] phi from main::@4 to main::@4 [phi:main::@4->main::@4] - //SEG40 [21] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@4->main::@4#0] -- register_copy - //SEG41 [21] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@4->main::@4#1] -- register_copy - //SEG42 main::@4 - b4: - //SEG43 [22] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG28 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG29 [14] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG30 [14] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@3->main::@3#1] -- register_copy + //SEG31 main::@3 + b3: + //SEG32 [15] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y sta (dst),y - //SEG44 [23] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 + //SEG33 [16] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: - //SEG45 [24] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 + //SEG34 [17] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG46 [25] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e7) goto main::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG35 [18] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@3 -- pbuz1_neq_pbuc1_then_la1 lda src+1 - cmp #>SCREEN+$3e7 - bne b4 + cmp #>SCREEN+$3e8 + bne b3 lda src - cmp #main::@5] - //SEG48 main::@5 - //SEG49 [27] call initSquareTables - //SEG50 [86] phi from main::@5 to initSquareTables [phi:main::@5->initSquareTables] + cmp #main::@4] + //SEG37 main::@4 + //SEG38 [20] call initSquareTables + //SEG39 [79] phi from main::@4 to initSquareTables [phi:main::@4->initSquareTables] jsr initSquareTables - //SEG51 [28] phi from main::@5 main::@7 to main::@6 [phi:main::@5/main::@7->main::@6] + //SEG40 [21] phi from main::@4 main::@6 to main::@5 [phi:main::@4/main::@6->main::@5] b2: // Main loop - //SEG52 main::@6 - //SEG53 [29] call getCenterChar - //SEG54 [58] phi from main::@6 to getCenterChar [phi:main::@6->getCenterChar] - jsr getCenterChar - //SEG55 [30] (byte) getCenterChar::return_x#0 ← (byte) getCenterChar::return_x#1 -- vbuxx=vbuz1 - ldx getCenterChar.return_x - //SEG56 [31] (byte) getCenterChar::return_y#0 ← (byte) getCenterChar::return_y#1 -- vbuyy=vbuz1 - ldy getCenterChar.return_y - //SEG57 [32] (word) getCenterChar::return_dist#0 ← (word) getCenterChar::return_dist#1 - //SEG58 main::@9 - //SEG59 [33] (byte) main::center_x#0 ← (byte) getCenterChar::return_x#0 - //SEG60 [34] (byte) main::center_y#0 ← (byte) getCenterChar::return_y#0 - //SEG61 [35] (word) main::center_dist#0 ← (word) getCenterChar::return_dist#0 - //SEG62 [36] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@7 -- vwuz1_neq_vwuc1_then_la1 + //SEG41 main::@5 + //SEG42 [22] call getCharToProcess + //SEG43 [51] phi from main::@5 to getCharToProcess [phi:main::@5->getCharToProcess] + jsr getCharToProcess + //SEG44 [23] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuyy=vbuz1 + ldy getCharToProcess.return_x + //SEG45 [24] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuxx=vbuz1 + ldx getCharToProcess.return_y + //SEG46 [25] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 + //SEG47 main::@8 + //SEG48 [26] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 + //SEG49 [27] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 + //SEG50 [28] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 + //SEG51 [29] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@6 -- vwuz1_neq_vwuc1_then_la1 lda center_dist+1 cmp #>NOT_FOUND - bne b7 + bne b6 lda center_dist cmp #startProcessing] + //SEG53 [30] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc SCREEN+$3e7 + jmp b7 + //SEG54 main::@6 + b6: + //SEG55 [31] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 -- vbuz1=vbuyy + sty startProcessing.center_x + //SEG56 [32] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 -- vbuz1=vbuxx + stx startProcessing.center_y + //SEG57 [33] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0 + //SEG58 [34] call startProcessing + //SEG59 [35] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] jsr startProcessing jmp b2 } -//SEG71 startProcessing +//SEG60 startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zeropage($19) center_x, byte zeropage($1a) center_y, word zeropage($11) center_dist) +// startProcessing(byte zeropage($17) center_x, byte zeropage($18) center_y, word zeropage($f) center_dist) startProcessing: { - .label center_x = $19 - .label center_y = $1a - .label center_dist = $11 - .label freeIdx = 8 - //SEG72 [43] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] - //SEG73 [43] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 + .label center_x = $17 + .label center_y = $18 + .label center_dist = $f + .label freeIdx = 6 + //SEG61 [36] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + //SEG62 [36] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 lda #$ff sta freeIdx - //SEG74 startProcessing::@1 + //SEG63 startProcessing::@1 b1: - //SEG75 [44] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] - //SEG76 [44] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuxx=vbuc1 + //SEG64 [37] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + //SEG65 [37] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG77 [44] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] - //SEG78 [44] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy - //SEG79 startProcessing::@2 + //SEG66 [37] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + //SEG67 [37] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + //SEG68 startProcessing::@2 b2: - //SEG80 [45] (byte~) startProcessing::$4 ← (byte) startProcessing::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG69 [38] (byte~) startProcessing::$5 ← (byte) startProcessing::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG81 [46] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$4)!=(const word) NOT_FOUND#0) goto startProcessing::@3 -- pwuc1_derefidx_vbuaa_neq_vwuc2_then_la1 + //SEG70 [39] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5)!=(const word) NOT_FOUND#0) goto startProcessing::@3 -- pwuc1_derefidx_vbuaa_neq_vwuc2_then_la1 tay lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y cmp #>NOT_FOUND @@ -6496,117 +6315,117 @@ startProcessing: { lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y cmp #startProcessing::@4] - //SEG83 [47] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4#0] -- register_copy - //SEG84 startProcessing::@4 + //SEG71 [40] phi from startProcessing::@2 startProcessing::@7 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4] + //SEG72 [40] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@7->startProcessing::@4#0] -- register_copy + //SEG73 startProcessing::@4 b4: - //SEG85 [48] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6 -- vbuxx_eq_vbuc1_then_la1 + //SEG74 [41] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6 -- vbuxx_eq_vbuc1_then_la1 cpx #$ff beq b6 - //SEG86 startProcessing::@5 - //SEG87 [49] (byte~) startProcessing::$5 ← (byte) startProcessing::freeIdx#2 << (byte) 2 -- vbuxx=vbuxx_rol_2 + //SEG75 startProcessing::@5 + //SEG76 [42] (byte~) startProcessing::$6 ← (byte) startProcessing::freeIdx#2 << (byte) 2 -- vbuxx=vbuxx_rol_2 txa asl asl tax - //SEG88 [50] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0 + (byte~) startProcessing::$5) ← (byte) startProcessing::center_x#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG77 [43] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda center_x sta PROCESSING,x - //SEG89 [51] *((byte*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$5) ← (byte) startProcessing::center_y#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG78 [44] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda center_y sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,x - //SEG90 [52] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5) ← (word) startProcessing::center_dist#0 -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG79 [45] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda center_dist sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,x lda center_dist+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,x - //SEG91 startProcessing::@return - //SEG92 [53] return + //SEG80 startProcessing::@return + //SEG81 [46] return rts - //SEG93 startProcessing::@6 + //SEG82 startProcessing::@6 b6: - //SEG94 [54] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuxx + //SEG83 [47] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuxx stx freeIdx - //SEG95 [43] phi from startProcessing::@6 to startProcessing::@1 [phi:startProcessing::@6->startProcessing::@1] - //SEG96 [43] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@6->startProcessing::@1#0] -- register_copy + //SEG84 [36] phi from startProcessing::@6 to startProcessing::@1 [phi:startProcessing::@6->startProcessing::@1] + //SEG85 [36] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@6->startProcessing::@1#0] -- register_copy jmp b1 - //SEG97 startProcessing::@3 + //SEG86 startProcessing::@3 b3: - //SEG98 [55] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuxx=_inc_vbuxx + //SEG87 [48] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuxx=_inc_vbuxx inx - //SEG99 [56] if((byte) startProcessing::i#1!=(byte) 8) goto startProcessing::@2 -- vbuxx_neq_vbuc1_then_la1 - cpx #8 + //SEG88 [49] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #NUM_PROCESSING-1+1 bne b2 - //SEG100 startProcessing::@7 - //SEG101 [57] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuxx=vbuz1 + //SEG89 startProcessing::@7 + //SEG90 [50] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuxx=vbuz1 ldx freeIdx jmp b4 } -//SEG102 getCenterChar +//SEG91 getCharToProcess // Find the non-space char closest to the center of the screen // If no non-space char is found the distance will be 0xffff -getCenterChar: { - .label _9 = $1b - .label _10 = $1b - .label _11 = $1b - .label return_dist = $11 - .label x = $c - .label dist = $11 - .label screen_line = 9 - .label y = $b - .label return_x = $f - .label return_y = $10 - .label closest_dist = $d - .label closest_x = $f - .label closest_y = $10 - .label _15 = $1d - .label _16 = $1b - //SEG103 [59] phi from getCenterChar to getCenterChar::@1 [phi:getCenterChar->getCenterChar::@1] - //SEG104 [59] phi (byte) getCenterChar::closest_y#9 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#0] -- vbuz1=vbuc1 +getCharToProcess: { + .label _9 = $19 + .label _10 = $19 + .label _11 = $19 + .label return_dist = $f + .label x = $a + .label dist = $f + .label screen_line = 7 + .label y = 9 + .label return_x = $d + .label return_y = $e + .label closest_dist = $b + .label closest_x = $d + .label closest_y = $e + .label _15 = $1b + .label _16 = $19 + //SEG92 [52] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + //SEG93 [52] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta closest_y - //SEG105 [59] phi (byte) getCenterChar::closest_x#9 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#1] -- vbuz1=vbuc1 + //SEG94 [52] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 sta closest_x - //SEG106 [59] phi (word) getCenterChar::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCenterChar->getCenterChar::@1#2] -- vwuz1=vwuc1 + //SEG95 [52] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1 lda #NOT_FOUND sta closest_dist+1 - //SEG107 [59] phi (byte) getCenterChar::y#7 = (byte) 0 [phi:getCenterChar->getCenterChar::@1#3] -- vbuz1=vbuc1 + //SEG96 [52] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #0 sta y - //SEG108 [59] phi (byte*) getCenterChar::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCenterChar->getCenterChar::@1#4] -- pbuz1=pbuc1 + //SEG97 [52] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1 lda #SCREEN_COPY sta screen_line+1 - //SEG109 getCenterChar::@1 + //SEG98 getCharToProcess::@1 b1: - //SEG110 [60] phi from getCenterChar::@1 to getCenterChar::@2 [phi:getCenterChar::@1->getCenterChar::@2] - //SEG111 [60] phi (byte) getCenterChar::closest_y#7 = (byte) getCenterChar::closest_y#9 [phi:getCenterChar::@1->getCenterChar::@2#0] -- register_copy - //SEG112 [60] phi (byte) getCenterChar::closest_x#7 = (byte) getCenterChar::closest_x#9 [phi:getCenterChar::@1->getCenterChar::@2#1] -- register_copy - //SEG113 [60] phi (word) getCenterChar::closest_dist#2 = (word) getCenterChar::closest_dist#8 [phi:getCenterChar::@1->getCenterChar::@2#2] -- register_copy - //SEG114 [60] phi (byte) getCenterChar::x#2 = (byte) 0 [phi:getCenterChar::@1->getCenterChar::@2#3] -- vbuz1=vbuc1 + //SEG99 [53] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + //SEG100 [53] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + //SEG101 [53] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + //SEG102 [53] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + //SEG103 [53] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta x - //SEG115 getCenterChar::@2 + //SEG104 getCharToProcess::@2 b2: - //SEG116 [61] if(*((byte*) getCenterChar::screen_line#4 + (byte) getCenterChar::x#2)==(byte) ' ') goto getCenterChar::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + //SEG105 [54] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 ldy x lda (screen_line),y cmp #' ' bne !b11+ jmp b11 !b11: - //SEG117 getCenterChar::@4 - //SEG118 [62] (byte~) getCenterChar::$13 ← (byte) getCenterChar::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG106 getCharToProcess::@4 + //SEG107 [55] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 tya asl tax - //SEG119 [63] (byte~) getCenterChar::$14 ← (byte) getCenterChar::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG108 [56] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG120 [64] (word) getCenterChar::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCenterChar::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCenterChar::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa + //SEG109 [57] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa tay lda SQUARES_X,x clc @@ -6615,7 +6434,7 @@ getCenterChar: { lda SQUARES_X+1,x adc SQUARES_Y+1,y sta dist+1 - //SEG121 [65] if((word) getCenterChar::dist#0>=(word) getCenterChar::closest_dist#2) goto getCenterChar::@12 -- vwuz1_ge_vwuz2_then_la1 + //SEG110 [58] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1 lda closest_dist+1 cmp dist+1 bne !+ @@ -6628,41 +6447,41 @@ getCenterChar: { bcs !b12+ jmp b12 !b12: - //SEG122 getCenterChar::@5 - //SEG123 [66] (byte~) getCenterChar::return_x#7 ← (byte) getCenterChar::x#2 -- vbuz1=vbuz2 + //SEG111 getCharToProcess::@5 + //SEG112 [59] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda x sta return_x - //SEG124 [67] (byte~) getCenterChar::return_y#7 ← (byte) getCenterChar::y#7 -- vbuz1=vbuz2 + //SEG113 [60] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda y sta return_y - //SEG125 [68] phi from getCenterChar::@11 getCenterChar::@12 getCenterChar::@5 to getCenterChar::@3 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3] - //SEG126 [68] phi (byte) getCenterChar::return_y#1 = (byte) getCenterChar::closest_y#7 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#0] -- register_copy - //SEG127 [68] phi (byte) getCenterChar::return_x#1 = (byte) getCenterChar::closest_x#7 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#1] -- register_copy - //SEG128 [68] phi (word) getCenterChar::return_dist#1 = (word~) getCenterChar::return_dist#5 [phi:getCenterChar::@11/getCenterChar::@12/getCenterChar::@5->getCenterChar::@3#2] -- register_copy - //SEG129 getCenterChar::@3 + //SEG114 [61] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + //SEG115 [61] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + //SEG116 [61] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + //SEG117 [61] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + //SEG118 getCharToProcess::@3 b3: - //SEG130 [69] (byte) getCenterChar::x#1 ← ++ (byte) getCenterChar::x#2 -- vbuz1=_inc_vbuz1 + //SEG119 [62] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG131 [70] if((byte) getCenterChar::x#1!=(byte) $28) goto getCenterChar::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG120 [63] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b10 - //SEG132 getCenterChar::@6 - //SEG133 [71] (byte*) getCenterChar::screen_line#1 ← (byte*) getCenterChar::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG121 getCharToProcess::@6 + //SEG122 [64] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 clc adc screen_line sta screen_line bcc !+ inc screen_line+1 !: - //SEG134 [72] (byte) getCenterChar::y#1 ← ++ (byte) getCenterChar::y#7 -- vbuz1=_inc_vbuz1 + //SEG123 [65] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc y - //SEG135 [73] if((byte) getCenterChar::y#1!=(byte) $19) goto getCenterChar::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG124 [66] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b9 - //SEG136 getCenterChar::@7 - //SEG137 [74] if((word) getCenterChar::return_dist#1==(const word) NOT_FOUND#0) goto getCenterChar::@return -- vwuz1_eq_vwuc1_then_la1 + //SEG125 getCharToProcess::@7 + //SEG126 [67] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1 lda return_dist cmp #NOT_FOUND beq breturn !: - //SEG138 getCenterChar::@8 - //SEG139 [75] (word~) getCenterChar::$9 ← (word)(byte) getCenterChar::return_y#1 -- vwuz1=_word_vbuz2 + //SEG127 getCharToProcess::@8 + //SEG128 [68] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 lda return_y sta _9 lda #0 sta _9+1 - //SEG140 [76] (word) getCenterChar::$15 ← (word~) getCenterChar::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 + //SEG129 [69] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda _9 asl sta _15 @@ -6685,7 +6504,7 @@ getCenterChar: { sta _15+1 asl _15 rol _15+1 - //SEG141 [77] (word) getCenterChar::$16 ← (word) getCenterChar::$15 + (word~) getCenterChar::$9 -- vwuz1=vwuz2_plus_vwuz1 + //SEG130 [70] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1 lda _16 clc adc _15 @@ -6693,14 +6512,14 @@ getCenterChar: { lda _16+1 adc _15+1 sta _16+1 - //SEG142 [78] (word~) getCenterChar::$10 ← (word) getCenterChar::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG131 [71] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _10 rol _10+1 asl _10 rol _10+1 asl _10 rol _10+1 - //SEG143 [79] (byte*~) getCenterChar::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCenterChar::$10 -- pbuz1=pbuc1_plus_vwuz1 + //SEG132 [72] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz1 clc lda _11 adc #SCREEN_COPY sta _11+1 - //SEG144 [80] *((byte*~) getCenterChar::$11 + (byte) getCenterChar::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG133 [73] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy return_x sta (_11),y - //SEG145 getCenterChar::@return + //SEG134 getCharToProcess::@return breturn: - //SEG146 [81] return + //SEG135 [74] return rts - //SEG147 getCenterChar::@9 + //SEG136 getCharToProcess::@9 b9: - //SEG148 [82] (word~) getCenterChar::closest_dist#10 ← (word) getCenterChar::return_dist#1 -- vwuz1=vwuz2 + //SEG137 [75] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist sta closest_dist lda return_dist+1 sta closest_dist+1 - //SEG149 [59] phi from getCenterChar::@9 to getCenterChar::@1 [phi:getCenterChar::@9->getCenterChar::@1] - //SEG150 [59] phi (byte) getCenterChar::closest_y#9 = (byte) getCenterChar::return_y#1 [phi:getCenterChar::@9->getCenterChar::@1#0] -- register_copy - //SEG151 [59] phi (byte) getCenterChar::closest_x#9 = (byte) getCenterChar::return_x#1 [phi:getCenterChar::@9->getCenterChar::@1#1] -- register_copy - //SEG152 [59] phi (word) getCenterChar::closest_dist#8 = (word~) getCenterChar::closest_dist#10 [phi:getCenterChar::@9->getCenterChar::@1#2] -- register_copy - //SEG153 [59] phi (byte) getCenterChar::y#7 = (byte) getCenterChar::y#1 [phi:getCenterChar::@9->getCenterChar::@1#3] -- register_copy - //SEG154 [59] phi (byte*) getCenterChar::screen_line#4 = (byte*) getCenterChar::screen_line#1 [phi:getCenterChar::@9->getCenterChar::@1#4] -- register_copy + //SEG138 [52] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + //SEG139 [52] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + //SEG140 [52] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + //SEG141 [52] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + //SEG142 [52] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + //SEG143 [52] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy jmp b1 - //SEG155 getCenterChar::@10 + //SEG144 getCharToProcess::@10 b10: - //SEG156 [83] (word~) getCenterChar::closest_dist#12 ← (word) getCenterChar::return_dist#1 -- vwuz1=vwuz2 + //SEG145 [76] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2 lda return_dist sta closest_dist lda return_dist+1 sta closest_dist+1 - //SEG157 [60] phi from getCenterChar::@10 to getCenterChar::@2 [phi:getCenterChar::@10->getCenterChar::@2] - //SEG158 [60] phi (byte) getCenterChar::closest_y#7 = (byte) getCenterChar::return_y#1 [phi:getCenterChar::@10->getCenterChar::@2#0] -- register_copy - //SEG159 [60] phi (byte) getCenterChar::closest_x#7 = (byte) getCenterChar::return_x#1 [phi:getCenterChar::@10->getCenterChar::@2#1] -- register_copy - //SEG160 [60] phi (word) getCenterChar::closest_dist#2 = (word~) getCenterChar::closest_dist#12 [phi:getCenterChar::@10->getCenterChar::@2#2] -- register_copy - //SEG161 [60] phi (byte) getCenterChar::x#2 = (byte) getCenterChar::x#1 [phi:getCenterChar::@10->getCenterChar::@2#3] -- register_copy + //SEG146 [53] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + //SEG147 [53] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + //SEG148 [53] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + //SEG149 [53] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + //SEG150 [53] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp b2 - //SEG162 getCenterChar::@12 + //SEG151 getCharToProcess::@12 b12: - //SEG163 [84] (word~) getCenterChar::return_dist#6 ← (word) getCenterChar::closest_dist#2 -- vwuz1=vwuz2 + //SEG152 [77] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist lda closest_dist+1 sta return_dist+1 jmp b3 - //SEG164 getCenterChar::@11 + //SEG153 getCharToProcess::@11 b11: - //SEG165 [85] (word~) getCenterChar::return_dist#5 ← (word) getCenterChar::closest_dist#2 -- vwuz1=vwuz2 + //SEG154 [78] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2 lda closest_dist sta return_dist lda closest_dist+1 sta return_dist+1 jmp b3 } -//SEG166 initSquareTables +//SEG155 initSquareTables // initialize SQUARES table initSquareTables: { - .label _6 = $15 - .label _14 = $15 - .label x = $13 - .label y = $14 - //SEG167 [87] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] - //SEG168 [87] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 + .label _6 = $13 + .label _14 = $13 + .label x = $11 + .label y = $12 + //SEG156 [80] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1] + //SEG157 [80] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG169 [87] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] - //SEG170 [87] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy - //SEG171 initSquareTables::@1 + //SEG158 [80] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1] + //SEG159 [80] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy + //SEG160 initSquareTables::@1 b1: - //SEG172 [88] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG161 [81] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$14 bcc b2 - //SEG173 initSquareTables::@3 - //SEG174 [89] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 + //SEG162 initSquareTables::@3 + //SEG163 [82] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$14 - //SEG175 [90] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] - //SEG176 [90] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy - //SEG177 initSquareTables::@4 + //SEG164 [83] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4] + //SEG165 [83] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy + //SEG166 initSquareTables::@4 b4: - //SEG178 [91] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa + //SEG167 [84] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa tax - //SEG179 [92] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 - //SEG180 [93] call mul8u - //SEG181 [116] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] - //SEG182 [116] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy - //SEG183 [116] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa + //SEG168 [85] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 + //SEG169 [86] call mul8u + //SEG170 [109] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u] + //SEG171 [109] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy + //SEG172 [109] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG184 [94] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG185 initSquareTables::@9 - //SEG186 [95] (word~) initSquareTables::$6 ← (word) mul8u::return#2 - //SEG187 [96] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG173 [87] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG174 initSquareTables::@9 + //SEG175 [88] (word~) initSquareTables::$6 ← (word) mul8u::return#2 + //SEG176 [89] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda x asl - //SEG188 [97] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG177 [90] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda _6 sta SQUARES_X,y lda _6+1 sta SQUARES_X+1,y - //SEG189 [98] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 + //SEG178 [91] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG190 [99] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG179 [92] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp x bne b1 - //SEG191 [100] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] - //SEG192 [100] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 + //SEG180 [93] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5] + //SEG181 [93] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG193 [100] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] - //SEG194 [100] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy - //SEG195 initSquareTables::@5 + //SEG182 [93] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5] + //SEG183 [93] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy + //SEG184 initSquareTables::@5 b5: - //SEG196 [101] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG185 [94] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #$c bcc b6 - //SEG197 initSquareTables::@7 - //SEG198 [102] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 + //SEG186 initSquareTables::@7 + //SEG187 [95] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1 sec sbc #$c - //SEG199 [103] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] - //SEG200 [103] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy - //SEG201 initSquareTables::@8 + //SEG188 [96] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8] + //SEG189 [96] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy + //SEG190 initSquareTables::@8 b8: - //SEG202 [104] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa + //SEG191 [97] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa tax - //SEG203 [105] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 - //SEG204 [106] call mul8u - //SEG205 [116] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] - //SEG206 [116] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy - //SEG207 [116] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa + //SEG192 [98] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 + //SEG193 [99] call mul8u + //SEG194 [109] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u] + //SEG195 [109] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy + //SEG196 [109] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG208 [107] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG209 initSquareTables::@10 - //SEG210 [108] (word~) initSquareTables::$14 ← (word) mul8u::return#3 - //SEG211 [109] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG197 [100] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG198 initSquareTables::@10 + //SEG199 [101] (word~) initSquareTables::$14 ← (word) mul8u::return#3 + //SEG200 [102] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda y asl - //SEG212 [110] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG201 [103] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda _14 sta SQUARES_Y,y lda _14+1 sta SQUARES_Y+1,y - //SEG213 [111] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 + //SEG202 [104] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG214 [112] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG203 [105] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp y bne b5 - //SEG215 initSquareTables::@return - //SEG216 [113] return + //SEG204 initSquareTables::@return + //SEG205 [106] return rts - //SEG217 initSquareTables::@6 + //SEG206 initSquareTables::@6 b6: - //SEG218 [114] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG207 [107] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$c sec sbc y jmp b8 - //SEG219 initSquareTables::@2 + //SEG208 initSquareTables::@2 b2: - //SEG220 [115] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 + //SEG209 [108] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1 lda #$14 sec sbc x jmp b4 } -//SEG221 mul8u +//SEG210 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { - .label mb = $17 - .label res = $15 - .label return = $15 - //SEG222 [117] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG223 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG224 [117] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + .label mb = $15 + .label res = $13 + .label return = $13 + //SEG211 [110] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG212 [110] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG213 [110] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res sta res+1 - //SEG225 [117] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG226 mul8u::@1 + //SEG214 [110] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG215 mul8u::@1 b1: - //SEG227 [118] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG216 [111] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG228 mul8u::@return - //SEG229 [119] return + //SEG217 mul8u::@return + //SEG218 [112] return rts - //SEG230 mul8u::@2 + //SEG219 mul8u::@2 b2: - //SEG231 [120] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG220 [113] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG232 [121] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG221 [114] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG233 mul8u::@4 - //SEG234 [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG222 mul8u::@4 + //SEG223 [115] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -6923,115 +6742,115 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG235 [123] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] - //SEG236 [123] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy - //SEG237 mul8u::@3 + //SEG224 [116] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG225 [116] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG226 mul8u::@3 b3: - //SEG238 [124] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG227 [117] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG239 [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG228 [118] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG240 [117] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] - //SEG241 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG242 [117] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG243 [117] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG229 [110] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG230 [110] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG231 [110] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG232 [110] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG244 setupRasterIrq +//SEG233 setupRasterIrq // Setup Raster IRQ setupRasterIrq: { .label irqRoutine = irqTop - //SEG245 asm { sei } + //SEG234 asm { sei } sei - //SEG246 [127] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG235 [120] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG247 [128] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG236 [121] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG248 [129] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG237 [122] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG249 setupRasterIrq::@1 - //SEG250 [130] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG238 setupRasterIrq::@1 + //SEG239 [123] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG251 setupRasterIrq::@2 - //SEG252 [131] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG240 setupRasterIrq::@2 + //SEG241 [124] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - //SEG253 [132] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG242 [125] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG254 [133] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 + //SEG243 [126] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2 // Set the IRQ routine lda #irqRoutine sta HARDWARE_IRQ+1 - //SEG255 asm { cli } + //SEG244 asm { cli } cli - //SEG256 setupRasterIrq::@return - //SEG257 [135] return + //SEG245 setupRasterIrq::@return + //SEG246 [128] return rts } -//SEG258 irqBottom +//SEG247 irqBottom // Raster Interrupt at the middle of the screen irqBottom: { - //SEG259 entry interrupt(HARDWARE_ALL) + //SEG248 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG260 [137] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] - //SEG261 [137] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 + //SEG249 [130] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1] + //SEG250 [130] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG262 [137] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] - //SEG263 [137] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy - //SEG264 irqBottom::@1 + //SEG251 [130] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1] + //SEG252 [130] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy + //SEG253 irqBottom::@1 b1: - //SEG265 [138] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx + //SEG254 [131] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx inx - //SEG266 [139] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG255 [132] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1 - //SEG267 irqBottom::@2 - //SEG268 [140] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG256 irqBottom::@2 + //SEG257 [133] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG269 [141] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG258 [134] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 sta BGCOL - //SEG270 [142] call processChars - //SEG271 [149] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] + //SEG259 [135] call processChars + //SEG260 [142] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars] jsr processChars - //SEG272 irqBottom::@3 - //SEG273 [143] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG261 irqBottom::@3 + //SEG262 [136] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG274 [144] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG263 [137] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG275 [145] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 + //SEG264 [138] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the top of the screen lda #RASTER_IRQ_TOP sta RASTER - //SEG276 [146] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 + //SEG265 [139] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2 lda #irqTop sta HARDWARE_IRQ+1 - //SEG277 [147] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG266 [140] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG278 irqBottom::@return - //SEG279 [148] return - exit interrupt(HARDWARE_ALL) + //SEG267 irqBottom::@return + //SEG268 [141] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -7040,33 +6859,33 @@ irqBottom: { ldy #00 rti } -//SEG280 processChars +//SEG269 processChars // Process any chars in the PROCESSING array processChars: { - .label _2 = $21 - .label _3 = $21 - .label _4 = $21 - .label _6 = $25 - .label _7 = $25 - .label _8 = $25 - .label processing_x = $1f - .label processing_y = $20 - .label _21 = $23 + .label _3 = $1f + .label _4 = $1f + .label _5 = $1f + .label _7 = $23 + .label _8 = $23 + .label _9 = $23 + .label processing_x = $1d + .label processing_y = $1e .label _22 = $21 - .label _24 = $27 + .label _23 = $1f .label _25 = $25 - //SEG281 [150] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] - //SEG282 [150] phi (byte) processChars::i#2 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuxx=vbuc1 + .label _26 = $23 + //SEG270 [143] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] + //SEG271 [143] phi (byte) processChars::i#2 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG283 [150] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] - //SEG284 [150] phi (byte) processChars::i#2 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy - //SEG285 processChars::@1 + //SEG272 [143] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1] + //SEG273 [143] phi (byte) processChars::i#2 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#0] -- register_copy + //SEG274 processChars::@1 b1: - //SEG286 [151] (byte~) processChars::$13 ← (byte) processChars::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG275 [144] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG287 [152] if(*((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$13)==(const word) NOT_FOUND#0) goto processChars::@2 -- pwuc1_derefidx_vbuaa_eq_vwuc2_then_la1 + //SEG276 [145] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$14)==(const word) NOT_FOUND#0) goto processChars::@2 -- pwuc1_derefidx_vbuaa_eq_vwuc2_then_la1 tay lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y cmp #COLS - sta _4+1 - //SEG297 [161] *((byte*~) processChars::$4 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 -- pbuz1_derefidx_vbuz2=vbuc1 + sta _5+1 + //SEG286 [154] *((byte*~) processChars::$5 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0 -- pbuz1_derefidx_vbuz2=vbuc1 lda #WHITE ldy processing_x - sta (_4),y - //SEG298 [162] (word~) processChars::$6 ← (word)(byte) processChars::processing_y#0 -- vwuz1=_word_vbuz2 + sta (_5),y + //SEG287 [155] (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0 -- vwuz1=_word_vbuz2 lda processing_y - sta _6 + sta _7 lda #0 - sta _6+1 - //SEG299 [163] (word) processChars::$24 ← (word~) processChars::$6 << (byte) 2 -- vwuz1=vwuz2_rol_2 - lda _6 + sta _7+1 + //SEG288 [156] (word) processChars::$25 ← (word~) processChars::$7 << (byte) 2 -- vwuz1=vwuz2_rol_2 + lda _7 asl - sta _24 - lda _6+1 - rol - sta _24+1 - asl _24 - rol _24+1 - //SEG300 [164] (word) processChars::$25 ← (word) processChars::$24 + (word~) processChars::$6 -- vwuz1=vwuz2_plus_vwuz1 - lda _25 - clc - adc _24 sta _25 - lda _25+1 - adc _24+1 + lda _7+1 + rol sta _25+1 - //SEG301 [165] (word~) processChars::$7 ← (word) processChars::$25 << (byte) 3 -- vwuz1=vwuz1_rol_3 - asl _7 - rol _7+1 - asl _7 - rol _7+1 - asl _7 - rol _7+1 - //SEG302 [166] (byte*~) processChars::$8 ← (const byte*) SCREEN#0 + (word~) processChars::$7 -- pbuz1=pbuc1_plus_vwuz1 + asl _25 + rol _25+1 + //SEG289 [157] (word) processChars::$26 ← (word) processChars::$25 + (word~) processChars::$7 -- vwuz1=vwuz2_plus_vwuz1 + lda _26 clc - lda _8 + adc _25 + sta _26 + lda _26+1 + adc _25+1 + sta _26+1 + //SEG290 [158] (word~) processChars::$8 ← (word) processChars::$26 << (byte) 3 -- vwuz1=vwuz1_rol_3 + asl _8 + rol _8+1 + asl _8 + rol _8+1 + asl _8 + rol _8+1 + //SEG291 [159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (word~) processChars::$8 -- pbuz1=pbuc1_plus_vwuz1 + clc + lda _9 adc #SCREEN - sta _8+1 - //SEG303 [167] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 - lda (_8),y + sta _9+1 + //SEG292 [160] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + lda (_9),y cmp #' ' beq b3 - //SEG304 processChars::@6 - //SEG305 [168] if(*((byte*~) processChars::$8 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 -- pbuz1_derefidx_vbuz2_gt_vbuc1_then_la1 - lda (_8),y + //SEG293 processChars::@6 + //SEG294 [161] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4 -- pbuz1_derefidx_vbuz2_gt_vbuc1_then_la1 + lda (_9),y cmp #' ' beq !+ bcs b4 !: - //SEG306 processChars::@7 - //SEG307 [169] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2 + //SEG295 processChars::@7 + //SEG296 [162] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2 ldy processing_x - lda (_8),y + lda (_9),y clc adc #1 - sta (_8),y - //SEG308 processChars::@2 + sta (_9),y + //SEG297 processChars::@2 b2: - //SEG309 [170] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 -- vbuxx=_inc_vbuxx + //SEG298 [163] (byte) processChars::i#1 ← ++ (byte) processChars::i#2 -- vbuxx=_inc_vbuxx inx - //SEG310 [171] if((byte) processChars::i#1!=(byte) 8) goto processChars::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #8 + //SEG299 [164] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #NUM_PROCESSING-1+1 beq !b1+ jmp b1 !b1: - //SEG311 processChars::@return - //SEG312 [172] return + //SEG300 processChars::@return + //SEG301 [165] return rts - //SEG313 processChars::@4 + //SEG302 processChars::@4 b4: - //SEG314 [173] *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$8 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz2 + //SEG303 [166] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) -- pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz2 ldy processing_x - lda (_8),y + lda (_9),y sec sbc #1 - sta (_8),y + sta (_9),y jmp b2 - //SEG315 processChars::@3 + //SEG304 processChars::@3 b3: - //SEG316 [174] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + //SEG305 [167] (byte~) processChars::$16 ← (byte) processChars::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG317 [175] *((word*)(const struct ProcessingChar[8]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$15) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuaa=vwuc2 + //SEG306 [168] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$16) ← (const word) NOT_FOUND#0 -- pwuc1_derefidx_vbuaa=vwuc2 tay lda #irqTop::@1] - //SEG321 [177] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 + //SEG309 [170] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1] + //SEG310 [170] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG322 [177] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] - //SEG323 [177] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy - //SEG324 irqTop::@1 + //SEG311 [170] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1] + //SEG312 [170] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy + //SEG313 irqTop::@1 b1: - //SEG325 [178] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx + //SEG314 [171] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx inx - //SEG326 [179] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG315 [172] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b1 - //SEG327 irqTop::@2 - //SEG328 [180] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG316 irqTop::@2 + //SEG317 [173] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG329 [181] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG318 [174] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 sta BGCOL - //SEG330 [182] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] - //SEG331 [182] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 + //SEG319 [175] phi from irqTop::@2 to irqTop::@3 [phi:irqTop::@2->irqTop::@3] + //SEG320 [175] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@2->irqTop::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG332 [182] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] - //SEG333 [182] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy - //SEG334 irqTop::@3 + //SEG321 [175] phi from irqTop::@3 to irqTop::@3 [phi:irqTop::@3->irqTop::@3] + //SEG322 [175] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@3->irqTop::@3#0] -- register_copy + //SEG323 irqTop::@3 b3: - //SEG335 [183] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx + //SEG324 [176] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx inx - //SEG336 [184] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG325 [177] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3 - //SEG337 irqTop::@4 - //SEG338 [185] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG326 irqTop::@4 + //SEG327 [178] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG339 [186] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG328 [179] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL - //SEG340 [187] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 + //SEG329 [180] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2 // Trigger IRQ at the middle of the screen lda #RASTER_IRQ_MIDDLE sta RASTER - //SEG341 [188] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 + //SEG330 [181] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2 lda #irqBottom sta HARDWARE_IRQ+1 - //SEG342 [189] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG331 [182] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS - //SEG343 irqTop::@return - //SEG344 [190] return - exit interrupt(HARDWARE_ALL) + //SEG332 irqTop::@return + //SEG333 [183] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -7288,10 +7107,10 @@ irqTop: { } // Copy of the screen used for finding chars to process SCREEN_COPY: .fill $3e8, 0 - // Chars currently being processed in the interrupt - PROCESSING: .fill 4*8, 0 // SQUARES_X[i] = (i-20)*(i-20) SQUARES_X: .fill 2*$28, 0 // SQUARES_Y[i] = (i-12)*(i-12) SQUARES_Y: .fill 2*$19, 0 + // Chars currently being processed in the interrupt + PROCESSING: .fill 4*NUM_PROCESSING, 0 diff --git a/src/test/ref/complex/blackhole/blackhole.sym b/src/test/ref/complex/blackhole/blackhole.sym index 157e0a3e5..b2e602452 100644 --- a/src/test/ref/complex/blackhole/blackhole.sym +++ b/src/test/ref/complex/blackhole/blackhole.sym @@ -25,10 +25,12 @@ (const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte) $e (word) NOT_FOUND (const word) NOT_FOUND#0 NOT_FOUND = (word) $ffff +(byte) NUM_PROCESSING +(const byte) NUM_PROCESSING#0 NUM_PROCESSING = (byte) $10 (const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST OFFSET_STRUCT_PROCESSINGCHAR_DIST = (byte) 2 (const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y OFFSET_STRUCT_PROCESSINGCHAR_Y = (byte) 1 -(struct ProcessingChar[8]) PROCESSING -(const struct ProcessingChar[8]) PROCESSING#0 PROCESSING = { fill( 8, 0) } +(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING +(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 PROCESSING = { fill( NUM_PROCESSING#0, 0) } (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = (byte*) 1 (byte*) PROCPORT_DDR @@ -58,73 +60,73 @@ (const byte*) VIC_CONTROL#0 VIC_CONTROL = (byte*) 53265 (byte) WHITE (const byte) WHITE#0 WHITE = (byte) 1 -(struct ProcessingChar()) getCenterChar() -(word~) getCenterChar::$10 $10 zp ZP_WORD:27 4.0 -(byte*~) getCenterChar::$11 $11 zp ZP_WORD:27 4.0 -(byte~) getCenterChar::$13 reg byte x 1001.0 -(byte~) getCenterChar::$14 reg byte a 2002.0 -(word) getCenterChar::$15 $15 zp ZP_WORD:29 4.0 -(word) getCenterChar::$16 $16 zp ZP_WORD:27 4.0 -(word~) getCenterChar::$9 $9 zp ZP_WORD:27 3.0 -(label) getCenterChar::@1 -(label) getCenterChar::@10 -(label) getCenterChar::@11 -(label) getCenterChar::@12 -(label) getCenterChar::@2 -(label) getCenterChar::@3 -(label) getCenterChar::@4 -(label) getCenterChar::@5 -(label) getCenterChar::@6 -(label) getCenterChar::@7 -(label) getCenterChar::@8 -(label) getCenterChar::@9 -(label) getCenterChar::@return -(struct ProcessingChar) getCenterChar::closest -(word) getCenterChar::closest_dist -(word~) getCenterChar::closest_dist#10 closest_dist zp ZP_WORD:13 202.0 -(word~) getCenterChar::closest_dist#12 closest_dist zp ZP_WORD:13 2002.0 -(word) getCenterChar::closest_dist#2 closest_dist zp ZP_WORD:13 684.1666666666667 -(word) getCenterChar::closest_dist#8 closest_dist zp ZP_WORD:13 202.0 -(byte) getCenterChar::closest_x -(byte) getCenterChar::closest_x#7 closest_x zp ZP_BYTE:15 388.0 -(byte) getCenterChar::closest_x#9 closest_x zp ZP_BYTE:15 202.0 -(byte) getCenterChar::closest_y -(byte) getCenterChar::closest_y#7 closest_y zp ZP_BYTE:16 388.0 -(byte) getCenterChar::closest_y#9 closest_y zp ZP_BYTE:16 202.0 -(word) getCenterChar::dist -(word) getCenterChar::dist#0 dist zp ZP_WORD:17 750.75 -(struct ProcessingChar) getCenterChar::return -(word) getCenterChar::return_dist -(word) getCenterChar::return_dist#0 return_dist zp ZP_WORD:17 7.333333333333333 -(word) getCenterChar::return_dist#1 return_dist zp ZP_WORD:17 242.23529411764704 -(word~) getCenterChar::return_dist#5 return_dist zp ZP_WORD:17 2002.0 -(word~) getCenterChar::return_dist#6 return_dist zp ZP_WORD:17 2002.0 -(byte) getCenterChar::return_x -(byte) getCenterChar::return_x#0 reg byte x 7.333333333333333 -(byte) getCenterChar::return_x#1 return_x zp ZP_BYTE:15 242.23529411764704 -(byte~) getCenterChar::return_x#7 return_x zp ZP_BYTE:15 1001.0 -(byte) getCenterChar::return_y -(byte) getCenterChar::return_y#0 reg byte y 7.333333333333333 -(byte) getCenterChar::return_y#1 return_y zp ZP_BYTE:16 228.66666666666669 -(byte~) getCenterChar::return_y#7 return_y zp ZP_BYTE:16 2002.0 -(byte*) getCenterChar::screen_line -(byte*) getCenterChar::screen_line#1 screen_line zp ZP_WORD:9 50.5 -(byte*) getCenterChar::screen_line#4 screen_line zp ZP_WORD:9 80.2 -(byte) getCenterChar::x -(byte) getCenterChar::x#1 x zp ZP_BYTE:12 1001.0 -(byte) getCenterChar::x#2 x zp ZP_BYTE:12 455.0 -(byte) getCenterChar::y -(byte) getCenterChar::y#1 y zp ZP_BYTE:11 101.0 -(byte) getCenterChar::y#7 y zp ZP_BYTE:11 137.75 +(struct ProcessingChar()) getCharToProcess() +(word~) getCharToProcess::$10 $10 zp ZP_WORD:25 4.0 +(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:25 4.0 +(byte~) getCharToProcess::$13 reg byte x 1001.0 +(byte~) getCharToProcess::$14 reg byte a 2002.0 +(word) getCharToProcess::$15 $15 zp ZP_WORD:27 4.0 +(word) getCharToProcess::$16 $16 zp ZP_WORD:25 4.0 +(word~) getCharToProcess::$9 $9 zp ZP_WORD:25 3.0 +(label) getCharToProcess::@1 +(label) getCharToProcess::@10 +(label) getCharToProcess::@11 +(label) getCharToProcess::@12 +(label) getCharToProcess::@2 +(label) getCharToProcess::@3 +(label) getCharToProcess::@4 +(label) getCharToProcess::@5 +(label) getCharToProcess::@6 +(label) getCharToProcess::@7 +(label) getCharToProcess::@8 +(label) getCharToProcess::@9 +(label) getCharToProcess::@return +(struct ProcessingChar) getCharToProcess::closest +(word) getCharToProcess::closest_dist +(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:11 202.0 +(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:11 2002.0 +(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:11 684.1666666666667 +(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:11 202.0 +(byte) getCharToProcess::closest_x +(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:13 388.0 +(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:13 202.0 +(byte) getCharToProcess::closest_y +(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:14 388.0 +(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:14 202.0 +(word) getCharToProcess::dist +(word) getCharToProcess::dist#0 dist zp ZP_WORD:15 750.75 +(struct ProcessingChar) getCharToProcess::return +(word) getCharToProcess::return_dist +(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:15 7.333333333333333 +(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:15 242.23529411764704 +(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:15 2002.0 +(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:15 2002.0 +(byte) getCharToProcess::return_x +(byte) getCharToProcess::return_x#0 reg byte y 7.333333333333333 +(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:13 242.23529411764704 +(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:13 1001.0 +(byte) getCharToProcess::return_y +(byte) getCharToProcess::return_y#0 reg byte x 7.333333333333333 +(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:14 228.66666666666669 +(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:14 2002.0 +(byte*) getCharToProcess::screen_line +(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:7 50.5 +(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:7 80.2 +(byte) getCharToProcess::x +(byte) getCharToProcess::x#1 x zp ZP_BYTE:10 1001.0 +(byte) getCharToProcess::x#2 x zp ZP_BYTE:10 455.0 +(byte) getCharToProcess::y +(byte) getCharToProcess::y#1 y zp ZP_BYTE:9 101.0 +(byte) getCharToProcess::y#7 y zp ZP_BYTE:9 137.75 (void()) initSquareTables() (byte~) initSquareTables::$10 reg byte a 22.0 (byte~) initSquareTables::$12 reg byte a 22.0 -(word~) initSquareTables::$14 $14 zp ZP_WORD:21 11.0 +(word~) initSquareTables::$14 $14 zp ZP_WORD:19 11.0 (byte~) initSquareTables::$16 reg byte a 22.0 (byte~) initSquareTables::$17 reg byte a 22.0 (byte~) initSquareTables::$2 reg byte a 22.0 (byte~) initSquareTables::$4 reg byte a 22.0 -(word~) initSquareTables::$6 $6 zp ZP_WORD:21 11.0 +(word~) initSquareTables::$6 $6 zp ZP_WORD:19 11.0 (label) initSquareTables::@1 (label) initSquareTables::@10 (label) initSquareTables::@2 @@ -137,13 +139,13 @@ (label) initSquareTables::@9 (label) initSquareTables::@return (byte) initSquareTables::x -(byte) initSquareTables::x#1 x zp ZP_BYTE:19 16.5 -(byte) initSquareTables::x#2 x zp ZP_BYTE:19 5.5 +(byte) initSquareTables::x#1 x zp ZP_BYTE:17 16.5 +(byte) initSquareTables::x#2 x zp ZP_BYTE:17 5.5 (byte) initSquareTables::x_dist (byte) initSquareTables::x_dist#0 reg byte a 22.0 (byte) initSquareTables::y -(byte) initSquareTables::y#1 y zp ZP_BYTE:20 16.5 -(byte) initSquareTables::y#2 y zp ZP_BYTE:20 5.5 +(byte) initSquareTables::y#1 y zp ZP_BYTE:18 16.5 +(byte) initSquareTables::y#2 y zp ZP_BYTE:18 5.5 (byte) initSquareTables::y_dist (byte) initSquareTables::y_dist#0 reg byte a 22.0 interrupt(HARDWARE_ALL)(void()) irqBottom() @@ -167,11 +169,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i1#1 reg byte x 16.5 (byte) irqTop::i1#2 reg byte x 22.0 (void()) main() -(struct ProcessingChar~) main::$11 -(byte~) main::$18 reg byte y 14.666666666666666 -(byte~) main::$5 reg byte a 22.0 -(byte~) main::$6 reg byte a 22.0 -(byte~) main::$7 reg byte a 22.0 +(byte~) main::$14 reg byte x 14.666666666666666 +(struct ProcessingChar~) main::$7 (label) main::@1 (label) main::@2 (label) main::@3 @@ -180,26 +179,22 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@6 (label) main::@7 (label) main::@8 -(label) main::@9 (struct ProcessingChar) main::center (word) main::center_dist -(word) main::center_dist#0 center_dist zp ZP_WORD:17 8.25 +(word) main::center_dist#0 center_dist zp ZP_WORD:15 8.25 (byte) main::center_x -(byte) main::center_x#0 reg byte x 5.5 +(byte) main::center_x#0 reg byte y 5.5 (byte) main::center_y -(byte) main::center_y#0 reg byte y 5.5 +(byte) main::center_y#0 reg byte x 5.5 (byte*) main::dst -(byte*) main::dst#1 dst zp ZP_WORD:6 11.0 -(byte*) main::dst#2 dst zp ZP_WORD:6 11.0 +(byte*) main::dst#1 dst zp ZP_WORD:4 11.0 +(byte*) main::dst#2 dst zp ZP_WORD:4 11.0 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 -(byte*) main::sc -(byte*) main::sc#1 sc zp ZP_WORD:2 16.5 -(byte*) main::sc#2 sc zp ZP_WORD:2 8.8 +(byte) main::i#1 reg byte y 16.5 +(byte) main::i#2 reg byte y 6.6000000000000005 (byte*) main::src -(byte*) main::src#1 src zp ZP_WORD:4 11.0 -(byte*) main::src#2 src zp ZP_WORD:4 16.5 +(byte*) main::src#1 src zp ZP_WORD:2 11.0 +(byte*) main::src#2 src zp ZP_WORD:2 16.5 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) (byte~) mul8u::$1 reg byte a 202.0 (label) mul8u::@1 @@ -217,30 +212,30 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) mul8u::b#0 reg byte a 22.0 (byte) mul8u::b#1 reg byte a 22.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp ZP_WORD:23 24.0 -(word) mul8u::mb#1 mb zp ZP_WORD:23 202.0 -(word) mul8u::mb#2 mb zp ZP_WORD:23 43.57142857142858 +(word) mul8u::mb#0 mb zp ZP_WORD:21 24.0 +(word) mul8u::mb#1 mb zp ZP_WORD:21 202.0 +(word) mul8u::mb#2 mb zp ZP_WORD:21 43.57142857142858 (word) mul8u::res -(word) mul8u::res#1 res zp ZP_WORD:21 202.0 -(word) mul8u::res#2 res zp ZP_WORD:21 46.42857142857143 -(word) mul8u::res#6 res zp ZP_WORD:21 101.0 +(word) mul8u::res#1 res zp ZP_WORD:19 202.0 +(word) mul8u::res#2 res zp ZP_WORD:19 46.42857142857143 +(word) mul8u::res#6 res zp ZP_WORD:19 101.0 (word) mul8u::return -(word) mul8u::return#2 return zp ZP_WORD:21 22.0 -(word) mul8u::return#3 return zp ZP_WORD:21 22.0 +(word) mul8u::return#2 return zp ZP_WORD:19 22.0 +(word) mul8u::return#3 return zp ZP_WORD:19 22.0 (void()) processChars() -(byte~) processChars::$13 reg byte a 22.0 -(byte~) processChars::$14 reg byte y 16.5 -(byte~) processChars::$15 reg byte a 22.0 -(word~) processChars::$2 $2 zp ZP_WORD:33 16.5 -(word) processChars::$21 $21 zp ZP_WORD:35 22.0 +(byte~) processChars::$14 reg byte a 22.0 +(byte~) processChars::$15 reg byte y 16.5 +(byte~) processChars::$16 reg byte a 22.0 (word) processChars::$22 $22 zp ZP_WORD:33 22.0 -(word) processChars::$24 $24 zp ZP_WORD:39 22.0 +(word) processChars::$23 $23 zp ZP_WORD:31 22.0 (word) processChars::$25 $25 zp ZP_WORD:37 22.0 -(word~) processChars::$3 $3 zp ZP_WORD:33 22.0 -(byte*~) processChars::$4 $4 zp ZP_WORD:33 22.0 -(word~) processChars::$6 $6 zp ZP_WORD:37 16.5 -(word~) processChars::$7 $7 zp ZP_WORD:37 22.0 -(byte*~) processChars::$8 $8 zp ZP_WORD:37 25.666666666666668 +(word) processChars::$26 $26 zp ZP_WORD:35 22.0 +(word~) processChars::$3 $3 zp ZP_WORD:31 16.5 +(word~) processChars::$4 $4 zp ZP_WORD:31 22.0 +(byte*~) processChars::$5 $5 zp ZP_WORD:31 22.0 +(word~) processChars::$7 $7 zp ZP_WORD:35 16.5 +(word~) processChars::$8 $8 zp ZP_WORD:35 22.0 +(byte*~) processChars::$9 $9 zp ZP_WORD:35 25.666666666666668 (label) processChars::@1 (label) processChars::@2 (label) processChars::@3 @@ -255,9 +250,9 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingChar) processChars::processing (byte*) processChars::processing_ptr (byte) processChars::processing_x -(byte) processChars::processing_x#0 processing_x zp ZP_BYTE:31 5.866666666666666 +(byte) processChars::processing_x#0 processing_x zp ZP_BYTE:29 5.866666666666666 (byte) processChars::processing_y -(byte) processChars::processing_y#0 processing_y zp ZP_BYTE:32 1.5714285714285714 +(byte) processChars::processing_y#0 processing_y zp ZP_BYTE:30 1.5714285714285714 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -266,8 +261,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist) -(byte~) startProcessing::$4 reg byte a 2002.0 -(byte~) startProcessing::$5 reg byte x 2.6666666666666665 +(byte~) startProcessing::$5 reg byte a 2002.0 +(byte~) startProcessing::$6 reg byte x 2.6666666666666665 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -278,71 +273,67 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) startProcessing::@return (struct ProcessingChar) startProcessing::center (word) startProcessing::center_dist -(word) startProcessing::center_dist#0 center_dist zp ZP_WORD:17 0.8666666666666666 +(word) startProcessing::center_dist#0 center_dist zp ZP_WORD:15 0.8666666666666666 (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:25 0.8666666666666666 +(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:23 0.8666666666666666 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:26 0.8666666666666666 +(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:24 0.8666666666666666 (byte) startProcessing::freeIdx (byte) startProcessing::freeIdx#2 reg byte x 653.0 -(byte) startProcessing::freeIdx#6 freeIdx zp ZP_BYTE:8 33.666666666666664 -(byte~) startProcessing::freeIdx#7 freeIdx zp ZP_BYTE:8 202.0 +(byte) startProcessing::freeIdx#6 freeIdx zp ZP_BYTE:6 33.666666666666664 +(byte~) startProcessing::freeIdx#7 freeIdx zp ZP_BYTE:6 202.0 (byte~) startProcessing::freeIdx#8 reg byte x 202.0 (byte) startProcessing::i (byte) startProcessing::i#1 reg byte x 1501.5 (byte) startProcessing::i#2 reg byte x 1334.6666666666667 -reg byte x [ main::i#2 main::i#1 ] -zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] -zp ZP_WORD:4 [ main::src#2 main::src#1 ] -zp ZP_WORD:6 [ main::dst#2 main::dst#1 ] -zp ZP_BYTE:8 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +reg byte y [ main::i#2 main::i#1 ] +zp ZP_WORD:2 [ main::src#2 main::src#1 ] +zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] +zp ZP_BYTE:6 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] reg byte x [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -zp ZP_WORD:9 [ getCenterChar::screen_line#4 getCenterChar::screen_line#1 ] -zp ZP_BYTE:11 [ getCenterChar::y#7 getCenterChar::y#1 ] -zp ZP_BYTE:12 [ getCenterChar::x#2 getCenterChar::x#1 ] -zp ZP_WORD:13 [ getCenterChar::closest_dist#2 getCenterChar::closest_dist#8 getCenterChar::closest_dist#10 getCenterChar::closest_dist#12 ] -zp ZP_BYTE:15 [ getCenterChar::closest_x#7 getCenterChar::closest_x#9 getCenterChar::return_x#1 getCenterChar::return_x#7 ] -zp ZP_BYTE:16 [ getCenterChar::closest_y#7 getCenterChar::closest_y#9 getCenterChar::return_y#1 getCenterChar::return_y#7 ] -zp ZP_WORD:17 [ getCenterChar::return_dist#1 getCenterChar::return_dist#5 getCenterChar::return_dist#6 getCenterChar::dist#0 getCenterChar::return_dist#0 main::center_dist#0 startProcessing::center_dist#0 ] -zp ZP_BYTE:19 [ initSquareTables::x#2 initSquareTables::x#1 ] +zp ZP_WORD:7 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] +zp ZP_BYTE:9 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +zp ZP_BYTE:10 [ getCharToProcess::x#2 getCharToProcess::x#1 ] +zp ZP_WORD:11 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +zp ZP_BYTE:13 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +zp ZP_BYTE:14 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +zp ZP_WORD:15 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 startProcessing::center_dist#0 ] +zp ZP_BYTE:17 [ initSquareTables::x#2 initSquareTables::x#1 ] reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] -zp ZP_BYTE:20 [ initSquareTables::y#2 initSquareTables::y#1 ] +zp ZP_BYTE:18 [ initSquareTables::y#2 initSquareTables::y#1 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -zp ZP_WORD:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] -zp ZP_WORD:23 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +zp ZP_WORD:19 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ] +zp ZP_WORD:21 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ irqBottom::i#2 irqBottom::i#1 ] reg byte x [ processChars::i#2 processChars::i#1 ] reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ] -reg byte y [ main::$18 ] -reg byte a [ main::$5 ] -reg byte a [ main::$6 ] -reg byte a [ main::$7 ] -reg byte x [ getCenterChar::return_x#0 ] -reg byte y [ getCenterChar::return_y#0 ] -reg byte x [ main::center_x#0 ] -reg byte y [ main::center_y#0 ] -zp ZP_BYTE:25 [ startProcessing::center_x#0 ] -zp ZP_BYTE:26 [ startProcessing::center_y#0 ] -reg byte a [ startProcessing::$4 ] -reg byte x [ startProcessing::$5 ] -reg byte x [ getCenterChar::$13 ] -reg byte a [ getCenterChar::$14 ] -zp ZP_WORD:27 [ getCenterChar::$9 getCenterChar::$16 getCenterChar::$10 getCenterChar::$11 ] -zp ZP_WORD:29 [ getCenterChar::$15 ] +reg byte x [ main::$14 ] +reg byte y [ getCharToProcess::return_x#0 ] +reg byte x [ getCharToProcess::return_y#0 ] +reg byte y [ main::center_x#0 ] +reg byte x [ main::center_y#0 ] +zp ZP_BYTE:23 [ startProcessing::center_x#0 ] +zp ZP_BYTE:24 [ startProcessing::center_y#0 ] +reg byte a [ startProcessing::$5 ] +reg byte x [ startProcessing::$6 ] +reg byte x [ getCharToProcess::$13 ] +reg byte a [ getCharToProcess::$14 ] +zp ZP_WORD:25 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ] +zp ZP_WORD:27 [ getCharToProcess::$15 ] reg byte a [ initSquareTables::$16 ] reg byte a [ initSquareTables::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ processChars::$13 ] -reg byte y [ processChars::$14 ] -zp ZP_BYTE:31 [ processChars::processing_x#0 ] -zp ZP_BYTE:32 [ processChars::processing_y#0 ] -zp ZP_WORD:33 [ processChars::$2 processChars::$22 processChars::$3 processChars::$4 ] -zp ZP_WORD:35 [ processChars::$21 ] -zp ZP_WORD:37 [ processChars::$6 processChars::$25 processChars::$7 processChars::$8 ] -zp ZP_WORD:39 [ processChars::$24 ] -reg byte a [ processChars::$15 ] +reg byte a [ processChars::$14 ] +reg byte y [ processChars::$15 ] +zp ZP_BYTE:29 [ processChars::processing_x#0 ] +zp ZP_BYTE:30 [ processChars::processing_y#0 ] +zp ZP_WORD:31 [ processChars::$3 processChars::$23 processChars::$4 processChars::$5 ] +zp ZP_WORD:33 [ processChars::$22 ] +zp ZP_WORD:35 [ processChars::$7 processChars::$26 processChars::$8 processChars::$9 ] +zp ZP_WORD:37 [ processChars::$25 ] +reg byte a [ processChars::$16 ] diff --git a/src/test/ref/fragments-assignment-unary.log b/src/test/ref/fragments-assignment-unary.log index f02ac0d1f..098ddc086 100644 --- a/src/test/ref/fragments-assignment-unary.log +++ b/src/test/ref/fragments-assignment-unary.log @@ -1176,7 +1176,12 @@ pbuz1_derefidx_vbuaa=_neg__deref_pbuc1 < vbuaa=_neg__deref_pbuc1 < vbuaa=_neg_vb clc adc #$01 sta ({z1}),y -CANNOT SYNTHESIZE pbuz1_derefidx_vbuaa=_dec_pbuz1_derefidx_vbuaa +pbuz1_derefidx_vbuaa=_dec_pbuz1_derefidx_vbuaa < pbuz1_derefidx_vbuyy=_dec_pbuz1_derefidx_vbuyy - clobber:A Y cycles:17.5 + tay + lda ({z1}),y + sec + sbc #1 + sta ({z1}),y CANNOT SYNTHESIZE pbuz1_derefidx_vbuaa=_pos_pbuz1_derefidx_vbuaa CANNOT SYNTHESIZE pbuz1_derefidx_vbuaa=_dec_pbuz1_derefidx_vbuxx CANNOT SYNTHESIZE pbuz1_derefidx_vbuaa=_pos_pbuz1_derefidx_vbuxx @@ -1453,7 +1458,13 @@ pbuz1_derefidx_vbuxx=_dec__deref_pbuc1 < pbuz1_derefidx_vbuaa=_dec__deref_pbuc1 CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=_pos__deref_pbuc1 CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=_inc_pbuz1_derefidx_vbuaa CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=_pos_pbuz1_derefidx_vbuaa -CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=_inc_pbuz1_derefidx_vbuxx +pbuz1_derefidx_vbuxx=_inc_pbuz1_derefidx_vbuxx < pbuz1_derefidx_vbuaa=_inc_pbuz1_derefidx_vbuaa < pbuz1_derefidx_vbuyy=_inc_pbuz1_derefidx_vbuyy - clobber:A Y cycles:19.5 + txa + tay + lda ({z1}),y + clc + adc #1 + sta ({z1}),y CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=_bnot_pbuz1_derefidx_vbuyy CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=_neg_pbuz1_derefidx_vbuyy CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=_bnot_pbuz1_derefidx_vbuz1 @@ -1728,7 +1739,11 @@ CANNOT SYNTHESIZE pbuz1_derefidx_vbuyy=_bnot_pbuz1_derefidx_vbuaa CANNOT SYNTHESIZE pbuz1_derefidx_vbuyy=_neg_pbuz1_derefidx_vbuaa CANNOT SYNTHESIZE pbuz1_derefidx_vbuyy=_bnot_pbuz1_derefidx_vbuxx CANNOT SYNTHESIZE pbuz1_derefidx_vbuyy=_neg_pbuz1_derefidx_vbuxx -CANNOT SYNTHESIZE pbuz1_derefidx_vbuyy=_dec_pbuz1_derefidx_vbuyy +*pbuz1_derefidx_vbuyy=_dec_pbuz1_derefidx_vbuyy - clobber:A cycles:15.5 + lda ({z1}),y + sec + sbc #1 + sta ({z1}),y CANNOT SYNTHESIZE pbuz1_derefidx_vbuyy=_neg_pbuz1_derefidx_vbuyy CANNOT SYNTHESIZE pbuz1_derefidx_vbuyy=_dec_pbuz1_derefidx_vbuz1 CANNOT SYNTHESIZE pbuz1_derefidx_vbuyy=_pos_pbuz1_derefidx_vbuz1 @@ -2333,7 +2348,12 @@ CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_bnot_pbuz1_derefidx_vbuyy CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_neg_pbuz1_derefidx_vbuyy CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz1 CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_neg_pbuz1_derefidx_vbuz1 -CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz2 +pbuz1_derefidx_vbuz2=_dec_pbuz1_derefidx_vbuz2 < pbuz1_derefidx_vbuyy=_dec_pbuz1_derefidx_vbuyy - clobber:A Y cycles:18.5 + ldy {z2} + lda ({z1}),y + sec + sbc #1 + sta ({z1}),y CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_pos_pbuz1_derefidx_vbuz2 CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz3 CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_pos_pbuz1_derefidx_vbuz3