mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-06-03 07:29:37 +00:00
7490 lines
475 KiB
Plaintext
7490 lines
475 KiB
Plaintext
Fixing struct type size struct printf_buffer_number to 12
|
|
Fixing struct type size struct printf_buffer_number to 12
|
|
Fixing struct type size struct printf_buffer_number to 12
|
|
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
|
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
|
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "'")
|
|
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "'($")
|
|
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_uchar(&cputc, main::ch, { 2, 0, 0, 0, 0, HEXADECIMAL })
|
|
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, ") ")
|
|
Adding parameter assignment in __stackcall procedure cputc::c = param(cputc::c)
|
|
Added struct type cast to parameter value list call printf_uchar(&cputc, main::ch, (struct printf_format_number){ 2, 0, 0, 0, 0, HEXADECIMAL })
|
|
Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
|
|
Inlined call main::$0 = call toD018(DEFAULT_SCREEN, DEFAULT_FONT_MIXED)
|
|
Inlined call call __init
|
|
Eliminating unused variable with no statement memcpy::$0
|
|
Eliminating unused variable with no statement memset::$2
|
|
Eliminating unused variable with no statement gotoxy::$4
|
|
Eliminating unused variable with no statement main::$2
|
|
Eliminating unused variable with no statement main::$7
|
|
Calling convention STACK_CALL adding prepare/execute/finalize for call *printf_str::putc printf_str::c
|
|
Calling convention STACK_CALL adding prepare/execute/finalize for call *printf_padding::putc printf_padding::pad
|
|
Calling convention STACK_CALL adding prepare/execute/finalize for call *printf_number_buffer::putc printf_number_buffer::buffer_sign
|
|
Calling convention __stackcall adding prepare/execute/finalize for call cputc(main::$6)
|
|
Calling convention STACK_CALL replacing param(cputc::c) with stackidx(char,cputc::OFFSET_STACK_C)
|
|
Calling convention STACK_CALL adding stack push stackpush(char) = printf_str::c
|
|
Calling convention STACK_CALL adding stack push stackpush(char) = printf_padding::pad
|
|
Calling convention STACK_CALL adding stack push stackpush(char) = printf_number_buffer::buffer_sign
|
|
Calling convention STACK_CALL adding stack push stackpush(char) = main::$6
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
|
|
void * memcpy(void *destination , void *source , unsigned int num)
|
|
memcpy: scope:[memcpy] from cscroll::@3 cscroll::@4
|
|
memcpy::num#2 = phi( cscroll::@3/memcpy::num#0, cscroll::@4/memcpy::num#1 )
|
|
memcpy::destination#2 = phi( cscroll::@3/memcpy::destination#0, cscroll::@4/memcpy::destination#1 )
|
|
memcpy::source#2 = phi( cscroll::@3/memcpy::source#0, cscroll::@4/memcpy::source#1 )
|
|
memcpy::src#0 = ((char *)) memcpy::source#2
|
|
memcpy::dst#0 = ((char *)) memcpy::destination#2
|
|
memcpy::$2 = (char *)memcpy::source#2
|
|
memcpy::src_end#0 = memcpy::$2 + memcpy::num#2
|
|
to:memcpy::@1
|
|
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
|
|
memcpy::destination#4 = phi( memcpy/memcpy::destination#2, memcpy::@2/memcpy::destination#5 )
|
|
memcpy::dst#3 = phi( memcpy/memcpy::dst#0, memcpy::@2/memcpy::dst#1 )
|
|
memcpy::src_end#1 = phi( memcpy/memcpy::src_end#0, memcpy::@2/memcpy::src_end#2 )
|
|
memcpy::src#2 = phi( memcpy/memcpy::src#0, memcpy::@2/memcpy::src#1 )
|
|
memcpy::$1 = memcpy::src#2 != memcpy::src_end#1
|
|
if(memcpy::$1) goto memcpy::@2
|
|
to:memcpy::@3
|
|
memcpy::@2: scope:[memcpy] from memcpy::@1
|
|
memcpy::destination#5 = phi( memcpy::@1/memcpy::destination#4 )
|
|
memcpy::src_end#2 = phi( memcpy::@1/memcpy::src_end#1 )
|
|
memcpy::dst#2 = phi( memcpy::@1/memcpy::dst#3 )
|
|
memcpy::src#3 = phi( memcpy::@1/memcpy::src#2 )
|
|
*memcpy::dst#2 = *memcpy::src#3
|
|
memcpy::dst#1 = ++ memcpy::dst#2
|
|
memcpy::src#1 = ++ memcpy::src#3
|
|
to:memcpy::@1
|
|
memcpy::@3: scope:[memcpy] from memcpy::@1
|
|
memcpy::destination#3 = phi( memcpy::@1/memcpy::destination#4 )
|
|
memcpy::return#0 = memcpy::destination#3
|
|
to:memcpy::@return
|
|
memcpy::@return: scope:[memcpy] from memcpy::@3
|
|
memcpy::return#4 = phi( memcpy::@3/memcpy::return#0 )
|
|
memcpy::return#1 = memcpy::return#4
|
|
return
|
|
to:@return
|
|
|
|
void * memset(void *str , char c , unsigned int num)
|
|
memset: scope:[memset] from cscroll::@5 cscroll::@6
|
|
memset::c#5 = phi( cscroll::@5/memset::c#0, cscroll::@6/memset::c#1 )
|
|
memset::str#4 = phi( cscroll::@5/memset::str#0, cscroll::@6/memset::str#1 )
|
|
memset::num#2 = phi( cscroll::@5/memset::num#0, cscroll::@6/memset::num#1 )
|
|
memset::$0 = memset::num#2 > 0
|
|
memset::$1 = ! memset::$0
|
|
if(memset::$1) goto memset::@1
|
|
to:memset::@2
|
|
memset::@1: scope:[memset] from memset memset::@3
|
|
memset::str#2 = phi( memset/memset::str#4, memset::@3/memset::str#5 )
|
|
memset::return#0 = memset::str#2
|
|
to:memset::@return
|
|
memset::@2: scope:[memset] from memset
|
|
memset::c#4 = phi( memset/memset::c#5 )
|
|
memset::num#3 = phi( memset/memset::num#2 )
|
|
memset::str#3 = phi( memset/memset::str#4 )
|
|
memset::$4 = (char *)memset::str#3
|
|
memset::end#0 = memset::$4 + memset::num#3
|
|
memset::dst#0 = ((char *)) memset::str#3
|
|
to:memset::@3
|
|
memset::@3: scope:[memset] from memset::@2 memset::@4
|
|
memset::c#3 = phi( memset::@2/memset::c#4, memset::@4/memset::c#2 )
|
|
memset::str#5 = phi( memset::@2/memset::str#3, memset::@4/memset::str#6 )
|
|
memset::end#1 = phi( memset::@2/memset::end#0, memset::@4/memset::end#2 )
|
|
memset::dst#2 = phi( memset::@2/memset::dst#0, memset::@4/memset::dst#1 )
|
|
memset::$3 = memset::dst#2 != memset::end#1
|
|
if(memset::$3) goto memset::@4
|
|
to:memset::@1
|
|
memset::@4: scope:[memset] from memset::@3
|
|
memset::str#6 = phi( memset::@3/memset::str#5 )
|
|
memset::end#2 = phi( memset::@3/memset::end#1 )
|
|
memset::dst#3 = phi( memset::@3/memset::dst#2 )
|
|
memset::c#2 = phi( memset::@3/memset::c#3 )
|
|
*memset::dst#3 = memset::c#2
|
|
memset::dst#1 = ++ memset::dst#3
|
|
to:memset::@3
|
|
memset::@return: scope:[memset] from memset::@1
|
|
memset::return#4 = phi( memset::@1/memset::return#0 )
|
|
memset::return#1 = memset::return#4
|
|
return
|
|
to:@return
|
|
|
|
unsigned int strlen(char *str)
|
|
strlen: scope:[strlen] from printf_number_buffer::@6
|
|
strlen::str#4 = phi( printf_number_buffer::@6/strlen::str#1 )
|
|
strlen::len#0 = 0
|
|
to:strlen::@1
|
|
strlen::@1: scope:[strlen] from strlen strlen::@2
|
|
strlen::len#4 = phi( strlen/strlen::len#0, strlen::@2/strlen::len#1 )
|
|
strlen::str#2 = phi( strlen/strlen::str#4, strlen::@2/strlen::str#0 )
|
|
strlen::$0 = 0 != *strlen::str#2
|
|
if(strlen::$0) goto strlen::@2
|
|
to:strlen::@3
|
|
strlen::@2: scope:[strlen] from strlen::@1
|
|
strlen::str#3 = phi( strlen::@1/strlen::str#2 )
|
|
strlen::len#2 = phi( strlen::@1/strlen::len#4 )
|
|
strlen::len#1 = ++ strlen::len#2
|
|
strlen::str#0 = ++ strlen::str#3
|
|
to:strlen::@1
|
|
strlen::@3: scope:[strlen] from strlen::@1
|
|
strlen::len#3 = phi( strlen::@1/strlen::len#4 )
|
|
strlen::return#0 = strlen::len#3
|
|
to:strlen::@return
|
|
strlen::@return: scope:[strlen] from strlen::@3
|
|
strlen::return#3 = phi( strlen::@3/strlen::return#0 )
|
|
strlen::return#1 = strlen::return#3
|
|
return
|
|
to:@return
|
|
|
|
char toupper(char ch)
|
|
toupper: scope:[toupper] from strupr::@2
|
|
toupper::ch#1 = phi( strupr::@2/toupper::ch#0 )
|
|
toupper::$0 = toupper::ch#1 >= 'a'
|
|
toupper::$1 = toupper::ch#1 <= 'z'
|
|
toupper::$2 = toupper::$0 && toupper::$1
|
|
if(toupper::$2) goto toupper::@1
|
|
to:toupper::@2
|
|
toupper::@1: scope:[toupper] from toupper
|
|
toupper::ch#2 = phi( toupper/toupper::ch#1 )
|
|
toupper::$3 = toupper::ch#2 + 'A'-'a'
|
|
toupper::return#0 = toupper::$3
|
|
to:toupper::@return
|
|
toupper::@2: scope:[toupper] from toupper
|
|
toupper::ch#3 = phi( toupper/toupper::ch#1 )
|
|
toupper::return#1 = toupper::ch#3
|
|
to:toupper::@return
|
|
toupper::@return: scope:[toupper] from toupper::@1 toupper::@2
|
|
toupper::return#4 = phi( toupper::@1/toupper::return#0, toupper::@2/toupper::return#1 )
|
|
toupper::return#2 = toupper::return#4
|
|
return
|
|
to:@return
|
|
|
|
char * strupr(char *str)
|
|
strupr: scope:[strupr] from printf_number_buffer::@11
|
|
strupr::str#1 = phi( printf_number_buffer::@11/strupr::str#0 )
|
|
strupr::src#0 = strupr::str#1
|
|
to:strupr::@1
|
|
strupr::@1: scope:[strupr] from strupr strupr::@4
|
|
strupr::str#3 = phi( strupr/strupr::str#1, strupr::@4/strupr::str#4 )
|
|
strupr::src#2 = phi( strupr/strupr::src#0, strupr::@4/strupr::src#1 )
|
|
strupr::$1 = 0 != *strupr::src#2
|
|
if(strupr::$1) goto strupr::@2
|
|
to:strupr::@3
|
|
strupr::@2: scope:[strupr] from strupr::@1
|
|
strupr::str#5 = phi( strupr::@1/strupr::str#3 )
|
|
strupr::src#3 = phi( strupr::@1/strupr::src#2 )
|
|
toupper::ch#0 = *strupr::src#3
|
|
call toupper
|
|
toupper::return#3 = toupper::return#2
|
|
to:strupr::@4
|
|
strupr::@4: scope:[strupr] from strupr::@2
|
|
strupr::str#4 = phi( strupr::@2/strupr::str#5 )
|
|
strupr::src#4 = phi( strupr::@2/strupr::src#3 )
|
|
toupper::return#5 = phi( strupr::@2/toupper::return#3 )
|
|
strupr::$0 = toupper::return#5
|
|
*strupr::src#4 = strupr::$0
|
|
strupr::src#1 = ++ strupr::src#4
|
|
to:strupr::@1
|
|
strupr::@3: scope:[strupr] from strupr::@1
|
|
strupr::str#2 = phi( strupr::@1/strupr::str#3 )
|
|
strupr::return#0 = strupr::str#2
|
|
to:strupr::@return
|
|
strupr::@return: scope:[strupr] from strupr::@3
|
|
strupr::return#3 = phi( strupr::@3/strupr::return#0 )
|
|
strupr::return#1 = strupr::return#3
|
|
return
|
|
to:@return
|
|
|
|
void uctoa(char value , char *buffer , char radix)
|
|
uctoa: scope:[uctoa] from printf_uchar::@3
|
|
uctoa::buffer#21 = phi( printf_uchar::@3/uctoa::buffer#5 )
|
|
uctoa::value#12 = phi( printf_uchar::@3/uctoa::value#1 )
|
|
uctoa::radix#1 = phi( printf_uchar::@3/uctoa::radix#0 )
|
|
uctoa::max_digits#0 = 0
|
|
uctoa::digit_values#0 = (char *) 0
|
|
uctoa::$0 = uctoa::radix#1 == DECIMAL
|
|
if(uctoa::$0) goto uctoa::@1
|
|
to:uctoa::@6
|
|
uctoa::@1: scope:[uctoa] from uctoa
|
|
uctoa::buffer#17 = phi( uctoa/uctoa::buffer#21 )
|
|
uctoa::value#8 = phi( uctoa/uctoa::value#12 )
|
|
uctoa::max_digits#1 = 3
|
|
uctoa::digit_values#1 = RADIX_DECIMAL_VALUES_CHAR
|
|
to:uctoa::@5
|
|
uctoa::@6: scope:[uctoa] from uctoa
|
|
uctoa::value#13 = phi( uctoa/uctoa::value#12 )
|
|
uctoa::buffer#16 = phi( uctoa/uctoa::buffer#21 )
|
|
uctoa::radix#2 = phi( uctoa/uctoa::radix#1 )
|
|
uctoa::$1 = uctoa::radix#2 == HEXADECIMAL
|
|
if(uctoa::$1) goto uctoa::@2
|
|
to:uctoa::@7
|
|
uctoa::@2: scope:[uctoa] from uctoa::@6
|
|
uctoa::buffer#18 = phi( uctoa::@6/uctoa::buffer#16 )
|
|
uctoa::value#9 = phi( uctoa::@6/uctoa::value#13 )
|
|
uctoa::max_digits#2 = 2
|
|
uctoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_CHAR
|
|
to:uctoa::@5
|
|
uctoa::@7: scope:[uctoa] from uctoa::@6
|
|
uctoa::value#14 = phi( uctoa::@6/uctoa::value#13 )
|
|
uctoa::buffer#13 = phi( uctoa::@6/uctoa::buffer#16 )
|
|
uctoa::radix#3 = phi( uctoa::@6/uctoa::radix#2 )
|
|
uctoa::$2 = uctoa::radix#3 == OCTAL
|
|
if(uctoa::$2) goto uctoa::@3
|
|
to:uctoa::@8
|
|
uctoa::@3: scope:[uctoa] from uctoa::@7
|
|
uctoa::buffer#19 = phi( uctoa::@7/uctoa::buffer#13 )
|
|
uctoa::value#10 = phi( uctoa::@7/uctoa::value#14 )
|
|
uctoa::max_digits#3 = 3
|
|
uctoa::digit_values#3 = RADIX_OCTAL_VALUES_CHAR
|
|
to:uctoa::@5
|
|
uctoa::@8: scope:[uctoa] from uctoa::@7
|
|
uctoa::value#15 = phi( uctoa::@7/uctoa::value#14 )
|
|
uctoa::buffer#10 = phi( uctoa::@7/uctoa::buffer#13 )
|
|
uctoa::radix#4 = phi( uctoa::@7/uctoa::radix#3 )
|
|
uctoa::$3 = uctoa::radix#4 == BINARY
|
|
if(uctoa::$3) goto uctoa::@4
|
|
to:uctoa::@9
|
|
uctoa::@4: scope:[uctoa] from uctoa::@8
|
|
uctoa::buffer#20 = phi( uctoa::@8/uctoa::buffer#10 )
|
|
uctoa::value#11 = phi( uctoa::@8/uctoa::value#15 )
|
|
uctoa::max_digits#4 = 8
|
|
uctoa::digit_values#4 = RADIX_BINARY_VALUES_CHAR
|
|
to:uctoa::@5
|
|
uctoa::@9: scope:[uctoa] from uctoa::@8
|
|
uctoa::buffer#6 = phi( uctoa::@8/uctoa::buffer#10 )
|
|
*uctoa::buffer#6 = 'e'
|
|
uctoa::buffer#0 = ++ uctoa::buffer#6
|
|
*uctoa::buffer#0 = 'r'
|
|
uctoa::buffer#1 = ++ uctoa::buffer#0
|
|
*uctoa::buffer#1 = 'r'
|
|
uctoa::buffer#2 = ++ uctoa::buffer#1
|
|
*uctoa::buffer#2 = 0
|
|
to:uctoa::@return
|
|
uctoa::@return: scope:[uctoa] from uctoa::@12 uctoa::@9
|
|
return
|
|
to:@return
|
|
uctoa::@5: scope:[uctoa] from uctoa::@1 uctoa::@2 uctoa::@3 uctoa::@4
|
|
uctoa::buffer#15 = phi( uctoa::@1/uctoa::buffer#17, uctoa::@2/uctoa::buffer#18, uctoa::@3/uctoa::buffer#19, uctoa::@4/uctoa::buffer#20 )
|
|
uctoa::value#7 = phi( uctoa::@1/uctoa::value#8, uctoa::@2/uctoa::value#9, uctoa::@3/uctoa::value#10, uctoa::@4/uctoa::value#11 )
|
|
uctoa::digit_values#8 = phi( uctoa::@1/uctoa::digit_values#1, uctoa::@2/uctoa::digit_values#2, uctoa::@3/uctoa::digit_values#3, uctoa::@4/uctoa::digit_values#4 )
|
|
uctoa::max_digits#7 = phi( uctoa::@1/uctoa::max_digits#1, uctoa::@2/uctoa::max_digits#2, uctoa::@3/uctoa::max_digits#3, uctoa::@4/uctoa::max_digits#4 )
|
|
uctoa::started#0 = 0
|
|
uctoa::digit#0 = 0
|
|
to:uctoa::@10
|
|
uctoa::@10: scope:[uctoa] from uctoa::@13 uctoa::@5
|
|
uctoa::buffer#11 = phi( uctoa::@13/uctoa::buffer#14, uctoa::@5/uctoa::buffer#15 )
|
|
uctoa::started#3 = phi( uctoa::@13/uctoa::started#4, uctoa::@5/uctoa::started#0 )
|
|
uctoa::value#5 = phi( uctoa::@13/uctoa::value#6, uctoa::@5/uctoa::value#7 )
|
|
uctoa::digit_values#6 = phi( uctoa::@13/uctoa::digit_values#7, uctoa::@5/uctoa::digit_values#8 )
|
|
uctoa::digit#2 = phi( uctoa::@13/uctoa::digit#1, uctoa::@5/uctoa::digit#0 )
|
|
uctoa::max_digits#5 = phi( uctoa::@13/uctoa::max_digits#6, uctoa::@5/uctoa::max_digits#7 )
|
|
uctoa::$4 = uctoa::max_digits#5 - 1
|
|
uctoa::$5 = uctoa::digit#2 < uctoa::$4
|
|
if(uctoa::$5) goto uctoa::@11
|
|
to:uctoa::@12
|
|
uctoa::@11: scope:[uctoa] from uctoa::@10
|
|
uctoa::max_digits#8 = phi( uctoa::@10/uctoa::max_digits#5 )
|
|
uctoa::buffer#12 = phi( uctoa::@10/uctoa::buffer#11 )
|
|
uctoa::started#2 = phi( uctoa::@10/uctoa::started#3 )
|
|
uctoa::value#2 = phi( uctoa::@10/uctoa::value#5 )
|
|
uctoa::digit#3 = phi( uctoa::@10/uctoa::digit#2 )
|
|
uctoa::digit_values#5 = phi( uctoa::@10/uctoa::digit_values#6 )
|
|
uctoa::digit_value#0 = uctoa::digit_values#5[uctoa::digit#3]
|
|
uctoa::$6 = uctoa::value#2 >= uctoa::digit_value#0
|
|
uctoa::$7 = uctoa::started#2 || uctoa::$6
|
|
uctoa::$8 = ! uctoa::$7
|
|
if(uctoa::$8) goto uctoa::@13
|
|
to:uctoa::@14
|
|
uctoa::@12: scope:[uctoa] from uctoa::@10
|
|
uctoa::buffer#7 = phi( uctoa::@10/uctoa::buffer#11 )
|
|
uctoa::value#3 = phi( uctoa::@10/uctoa::value#5 )
|
|
uctoa::$10 = (char)uctoa::value#3
|
|
*uctoa::buffer#7 = DIGITS[uctoa::$10]
|
|
uctoa::buffer#3 = ++ uctoa::buffer#7
|
|
*uctoa::buffer#3 = 0
|
|
to:uctoa::@return
|
|
uctoa::@13: scope:[uctoa] from uctoa::@11 uctoa::@15
|
|
uctoa::buffer#14 = phi( uctoa::@11/uctoa::buffer#12, uctoa::@15/uctoa::buffer#4 )
|
|
uctoa::started#4 = phi( uctoa::@11/uctoa::started#2, uctoa::@15/uctoa::started#1 )
|
|
uctoa::value#6 = phi( uctoa::@11/uctoa::value#2, uctoa::@15/uctoa::value#0 )
|
|
uctoa::digit_values#7 = phi( uctoa::@11/uctoa::digit_values#5, uctoa::@15/uctoa::digit_values#9 )
|
|
uctoa::max_digits#6 = phi( uctoa::@11/uctoa::max_digits#8, uctoa::@15/uctoa::max_digits#9 )
|
|
uctoa::digit#4 = phi( uctoa::@11/uctoa::digit#3, uctoa::@15/uctoa::digit#5 )
|
|
uctoa::digit#1 = ++ uctoa::digit#4
|
|
to:uctoa::@10
|
|
uctoa::@14: scope:[uctoa] from uctoa::@11
|
|
uctoa::digit_values#10 = phi( uctoa::@11/uctoa::digit_values#5 )
|
|
uctoa::max_digits#10 = phi( uctoa::@11/uctoa::max_digits#8 )
|
|
uctoa::digit#6 = phi( uctoa::@11/uctoa::digit#3 )
|
|
uctoa::digit_value#1 = phi( uctoa::@11/uctoa::digit_value#0 )
|
|
uctoa::value#4 = phi( uctoa::@11/uctoa::value#2 )
|
|
uctoa::buffer#8 = phi( uctoa::@11/uctoa::buffer#12 )
|
|
uctoa_append::buffer#0 = uctoa::buffer#8
|
|
uctoa_append::value#0 = uctoa::value#4
|
|
uctoa_append::sub#0 = uctoa::digit_value#1
|
|
call uctoa_append
|
|
uctoa_append::return#0 = uctoa_append::return#2
|
|
to:uctoa::@15
|
|
uctoa::@15: scope:[uctoa] from uctoa::@14
|
|
uctoa::digit_values#9 = phi( uctoa::@14/uctoa::digit_values#10 )
|
|
uctoa::max_digits#9 = phi( uctoa::@14/uctoa::max_digits#10 )
|
|
uctoa::digit#5 = phi( uctoa::@14/uctoa::digit#6 )
|
|
uctoa::buffer#9 = phi( uctoa::@14/uctoa::buffer#8 )
|
|
uctoa_append::return#3 = phi( uctoa::@14/uctoa_append::return#0 )
|
|
uctoa::$9 = uctoa_append::return#3
|
|
uctoa::value#0 = uctoa::$9
|
|
uctoa::buffer#4 = ++ uctoa::buffer#9
|
|
uctoa::started#1 = 1
|
|
to:uctoa::@13
|
|
|
|
char uctoa_append(char *buffer , char value , char sub)
|
|
uctoa_append: scope:[uctoa_append] from uctoa::@14
|
|
uctoa_append::buffer#3 = phi( uctoa::@14/uctoa_append::buffer#0 )
|
|
uctoa_append::sub#3 = phi( uctoa::@14/uctoa_append::sub#0 )
|
|
uctoa_append::value#5 = phi( uctoa::@14/uctoa_append::value#0 )
|
|
uctoa_append::digit#0 = 0
|
|
to:uctoa_append::@1
|
|
uctoa_append::@1: scope:[uctoa_append] from uctoa_append uctoa_append::@2
|
|
uctoa_append::buffer#2 = phi( uctoa_append/uctoa_append::buffer#3, uctoa_append::@2/uctoa_append::buffer#4 )
|
|
uctoa_append::digit#4 = phi( uctoa_append/uctoa_append::digit#0, uctoa_append::@2/uctoa_append::digit#1 )
|
|
uctoa_append::sub#1 = phi( uctoa_append/uctoa_append::sub#3, uctoa_append::@2/uctoa_append::sub#2 )
|
|
uctoa_append::value#2 = phi( uctoa_append/uctoa_append::value#5, uctoa_append::@2/uctoa_append::value#1 )
|
|
uctoa_append::$0 = uctoa_append::value#2 >= uctoa_append::sub#1
|
|
if(uctoa_append::$0) goto uctoa_append::@2
|
|
to:uctoa_append::@3
|
|
uctoa_append::@2: scope:[uctoa_append] from uctoa_append::@1
|
|
uctoa_append::buffer#4 = phi( uctoa_append::@1/uctoa_append::buffer#2 )
|
|
uctoa_append::sub#2 = phi( uctoa_append::@1/uctoa_append::sub#1 )
|
|
uctoa_append::value#3 = phi( uctoa_append::@1/uctoa_append::value#2 )
|
|
uctoa_append::digit#2 = phi( uctoa_append::@1/uctoa_append::digit#4 )
|
|
uctoa_append::digit#1 = ++ uctoa_append::digit#2
|
|
uctoa_append::value#1 = uctoa_append::value#3 - uctoa_append::sub#2
|
|
to:uctoa_append::@1
|
|
uctoa_append::@3: scope:[uctoa_append] from uctoa_append::@1
|
|
uctoa_append::value#4 = phi( uctoa_append::@1/uctoa_append::value#2 )
|
|
uctoa_append::buffer#1 = phi( uctoa_append::@1/uctoa_append::buffer#2 )
|
|
uctoa_append::digit#3 = phi( uctoa_append::@1/uctoa_append::digit#4 )
|
|
*uctoa_append::buffer#1 = DIGITS[uctoa_append::digit#3]
|
|
uctoa_append::return#1 = uctoa_append::value#4
|
|
to:uctoa_append::@return
|
|
uctoa_append::@return: scope:[uctoa_append] from uctoa_append::@3
|
|
uctoa_append::return#4 = phi( uctoa_append::@3/uctoa_append::return#1 )
|
|
uctoa_append::return#2 = uctoa_append::return#4
|
|
return
|
|
to:@return
|
|
|
|
void clrscr()
|
|
clrscr: scope:[clrscr] from main::@3
|
|
clrscr::line_text#0 = DEFAULT_SCREEN
|
|
clrscr::line_cols#0 = COLORRAM
|
|
clrscr::l#0 = 0
|
|
to:clrscr::@1
|
|
clrscr::@1: scope:[clrscr] from clrscr clrscr::@6
|
|
clrscr::line_cols#6 = phi( clrscr/clrscr::line_cols#0, clrscr::@6/clrscr::line_cols#1 )
|
|
clrscr::line_text#6 = phi( clrscr/clrscr::line_text#0, clrscr::@6/clrscr::line_text#1 )
|
|
clrscr::l#2 = phi( clrscr/clrscr::l#0, clrscr::@6/clrscr::l#1 )
|
|
clrscr::$0 = clrscr::l#2 < $19
|
|
if(clrscr::$0) goto clrscr::@2
|
|
to:clrscr::@3
|
|
clrscr::@2: scope:[clrscr] from clrscr::@1
|
|
clrscr::l#5 = phi( clrscr::@1/clrscr::l#2 )
|
|
clrscr::line_cols#5 = phi( clrscr::@1/clrscr::line_cols#6 )
|
|
clrscr::line_text#5 = phi( clrscr::@1/clrscr::line_text#6 )
|
|
clrscr::c#0 = 0
|
|
to:clrscr::@4
|
|
clrscr::@3: scope:[clrscr] from clrscr::@1
|
|
conio_cursor_x = 0
|
|
conio_cursor_y = 0
|
|
conio_line_text = DEFAULT_SCREEN
|
|
conio_line_color = COLORRAM
|
|
to:clrscr::@return
|
|
clrscr::@4: scope:[clrscr] from clrscr::@2 clrscr::@5
|
|
clrscr::l#4 = phi( clrscr::@2/clrscr::l#5, clrscr::@5/clrscr::l#6 )
|
|
clrscr::line_cols#4 = phi( clrscr::@2/clrscr::line_cols#5, clrscr::@5/clrscr::line_cols#2 )
|
|
clrscr::line_text#4 = phi( clrscr::@2/clrscr::line_text#5, clrscr::@5/clrscr::line_text#2 )
|
|
clrscr::c#2 = phi( clrscr::@2/clrscr::c#0, clrscr::@5/clrscr::c#1 )
|
|
clrscr::$1 = clrscr::c#2 < $28
|
|
if(clrscr::$1) goto clrscr::@5
|
|
to:clrscr::@6
|
|
clrscr::@5: scope:[clrscr] from clrscr::@4
|
|
clrscr::l#6 = phi( clrscr::@4/clrscr::l#4 )
|
|
clrscr::line_cols#2 = phi( clrscr::@4/clrscr::line_cols#4 )
|
|
clrscr::c#3 = phi( clrscr::@4/clrscr::c#2 )
|
|
clrscr::line_text#2 = phi( clrscr::@4/clrscr::line_text#4 )
|
|
clrscr::line_text#2[clrscr::c#3] = ' '
|
|
clrscr::line_cols#2[clrscr::c#3] = conio_textcolor
|
|
clrscr::c#1 = ++ clrscr::c#3
|
|
to:clrscr::@4
|
|
clrscr::@6: scope:[clrscr] from clrscr::@4
|
|
clrscr::l#3 = phi( clrscr::@4/clrscr::l#4 )
|
|
clrscr::line_cols#3 = phi( clrscr::@4/clrscr::line_cols#4 )
|
|
clrscr::line_text#3 = phi( clrscr::@4/clrscr::line_text#4 )
|
|
clrscr::line_text#1 = clrscr::line_text#3 + $28
|
|
clrscr::line_cols#1 = clrscr::line_cols#3 + $28
|
|
clrscr::l#1 = ++ clrscr::l#3
|
|
to:clrscr::@1
|
|
clrscr::@return: scope:[clrscr] from clrscr::@3
|
|
return
|
|
to:@return
|
|
|
|
void gotoxy(char x , char y)
|
|
gotoxy: scope:[gotoxy] from conio_c64_init::@1 cscroll::@2
|
|
gotoxy::x#5 = phi( conio_c64_init::@1/gotoxy::x#2, cscroll::@2/gotoxy::x#1 )
|
|
gotoxy::y#3 = phi( conio_c64_init::@1/gotoxy::y#2, cscroll::@2/gotoxy::y#1 )
|
|
gotoxy::$0 = gotoxy::y#3 > $19
|
|
gotoxy::$1 = ! gotoxy::$0
|
|
if(gotoxy::$1) goto gotoxy::@1
|
|
to:gotoxy::@3
|
|
gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@3
|
|
gotoxy::y#5 = phi( gotoxy/gotoxy::y#3, gotoxy::@3/gotoxy::y#0 )
|
|
gotoxy::x#3 = phi( gotoxy/gotoxy::x#5, gotoxy::@3/gotoxy::x#6 )
|
|
gotoxy::$2 = gotoxy::x#3 >= $28
|
|
gotoxy::$3 = ! gotoxy::$2
|
|
if(gotoxy::$3) goto gotoxy::@2
|
|
to:gotoxy::@4
|
|
gotoxy::@3: scope:[gotoxy] from gotoxy
|
|
gotoxy::x#6 = phi( gotoxy/gotoxy::x#5 )
|
|
gotoxy::y#0 = 0
|
|
to:gotoxy::@1
|
|
gotoxy::@2: scope:[gotoxy] from gotoxy::@1 gotoxy::@4
|
|
gotoxy::y#4 = phi( gotoxy::@1/gotoxy::y#5, gotoxy::@4/gotoxy::y#6 )
|
|
gotoxy::x#4 = phi( gotoxy::@1/gotoxy::x#3, gotoxy::@4/gotoxy::x#0 )
|
|
conio_cursor_x = gotoxy::x#4
|
|
conio_cursor_y = gotoxy::y#4
|
|
gotoxy::$7 = (unsigned int)gotoxy::y#4
|
|
gotoxy::line_offset#0 = gotoxy::$7 * $28
|
|
gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
|
|
conio_line_text = gotoxy::$5
|
|
gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
|
|
conio_line_color = gotoxy::$6
|
|
to:gotoxy::@return
|
|
gotoxy::@4: scope:[gotoxy] from gotoxy::@1
|
|
gotoxy::y#6 = phi( gotoxy::@1/gotoxy::y#5 )
|
|
gotoxy::x#0 = 0
|
|
to:gotoxy::@2
|
|
gotoxy::@return: scope:[gotoxy] from gotoxy::@2
|
|
return
|
|
to:@return
|
|
|
|
__stackcall void cputc(char c)
|
|
cputc: scope:[cputc] from
|
|
cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C)
|
|
cputc::$0 = cputc::c#0 == '
|
|
'
|
|
if(cputc::$0) goto cputc::@1
|
|
to:cputc::@2
|
|
cputc::@1: scope:[cputc] from cputc
|
|
call cputln
|
|
to:cputc::@4
|
|
cputc::@4: scope:[cputc] from cputc::@1
|
|
to:cputc::@return
|
|
cputc::@2: scope:[cputc] from cputc
|
|
cputc::c#1 = phi( cputc/cputc::c#0 )
|
|
conio_line_text[conio_cursor_x] = cputc::c#1
|
|
conio_line_color[conio_cursor_x] = conio_textcolor
|
|
conio_cursor_x = ++ conio_cursor_x
|
|
cputc::$1 = conio_cursor_x == $28
|
|
cputc::$2 = ! cputc::$1
|
|
if(cputc::$2) goto cputc::@return
|
|
to:cputc::@3
|
|
cputc::@3: scope:[cputc] from cputc::@2
|
|
call cputln
|
|
to:cputc::@5
|
|
cputc::@5: scope:[cputc] from cputc::@3
|
|
to:cputc::@return
|
|
cputc::@return: scope:[cputc] from cputc::@2 cputc::@4 cputc::@5
|
|
return
|
|
to:@return
|
|
|
|
void cputln()
|
|
cputln: scope:[cputln] from cputc::@1 cputc::@3
|
|
conio_line_text = conio_line_text + $28
|
|
conio_line_color = conio_line_color + $28
|
|
conio_cursor_x = 0
|
|
conio_cursor_y = ++ conio_cursor_y
|
|
call cscroll
|
|
to:cputln::@1
|
|
cputln::@1: scope:[cputln] from cputln
|
|
to:cputln::@return
|
|
cputln::@return: scope:[cputln] from cputln::@1
|
|
return
|
|
to:@return
|
|
|
|
void cscroll()
|
|
cscroll: scope:[cscroll] from cputln
|
|
cscroll::$0 = conio_cursor_y == $19
|
|
cscroll::$1 = ! cscroll::$0
|
|
if(cscroll::$1) goto cscroll::@return
|
|
to:cscroll::@1
|
|
cscroll::@1: scope:[cscroll] from cscroll
|
|
cscroll::$7 = 0 != conio_scroll_enable
|
|
if(cscroll::$7) goto cscroll::@3
|
|
to:cscroll::@2
|
|
cscroll::@3: scope:[cscroll] from cscroll::@1
|
|
memcpy::destination#0 = (void *)DEFAULT_SCREEN
|
|
memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
|
|
memcpy::num#0 = $19*$28-$28
|
|
call memcpy
|
|
memcpy::return#2 = memcpy::return#1
|
|
to:cscroll::@4
|
|
cscroll::@4: scope:[cscroll] from cscroll::@3
|
|
memcpy::destination#1 = (void *)COLORRAM
|
|
memcpy::source#1 = (void *)COLORRAM+$28
|
|
memcpy::num#1 = $19*$28-$28
|
|
call memcpy
|
|
memcpy::return#3 = memcpy::return#1
|
|
to:cscroll::@5
|
|
cscroll::@5: scope:[cscroll] from cscroll::@4
|
|
memset::str#0 = (void *)DEFAULT_SCREEN+$19*$28-$28
|
|
memset::c#0 = ' '
|
|
memset::num#0 = $28
|
|
call memset
|
|
memset::return#2 = memset::return#1
|
|
to:cscroll::@6
|
|
cscroll::@6: scope:[cscroll] from cscroll::@5
|
|
memset::str#1 = (void *)COLORRAM+$19*$28-$28
|
|
memset::c#1 = conio_textcolor
|
|
memset::num#1 = $28
|
|
call memset
|
|
memset::return#3 = memset::return#1
|
|
to:cscroll::@7
|
|
cscroll::@7: scope:[cscroll] from cscroll::@6
|
|
conio_line_text = conio_line_text - $28
|
|
conio_line_color = conio_line_color - $28
|
|
conio_cursor_y = -- conio_cursor_y
|
|
to:cscroll::@return
|
|
cscroll::@2: scope:[cscroll] from cscroll::@1
|
|
gotoxy::x#1 = 0
|
|
gotoxy::y#1 = 0
|
|
call gotoxy
|
|
to:cscroll::@8
|
|
cscroll::@8: scope:[cscroll] from cscroll::@2
|
|
to:cscroll::@return
|
|
cscroll::@return: scope:[cscroll] from cscroll cscroll::@7 cscroll::@8
|
|
return
|
|
to:@return
|
|
|
|
void conio_c64_init()
|
|
conio_c64_init: scope:[conio_c64_init] from __start::__init1
|
|
conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
|
|
conio_c64_init::$0 = conio_c64_init::line#0 >= $19
|
|
conio_c64_init::$1 = ! conio_c64_init::$0
|
|
if(conio_c64_init::$1) goto conio_c64_init::@1
|
|
to:conio_c64_init::@2
|
|
conio_c64_init::@1: scope:[conio_c64_init] from conio_c64_init conio_c64_init::@2
|
|
conio_c64_init::line#2 = phi( conio_c64_init/conio_c64_init::line#0, conio_c64_init::@2/conio_c64_init::line#1 )
|
|
gotoxy::x#2 = 0
|
|
gotoxy::y#2 = conio_c64_init::line#2
|
|
call gotoxy
|
|
to:conio_c64_init::@3
|
|
conio_c64_init::@3: scope:[conio_c64_init] from conio_c64_init::@1
|
|
to:conio_c64_init::@return
|
|
conio_c64_init::@2: scope:[conio_c64_init] from conio_c64_init
|
|
conio_c64_init::line#1 = $19-1
|
|
to:conio_c64_init::@1
|
|
conio_c64_init::@return: scope:[conio_c64_init] from conio_c64_init::@3
|
|
return
|
|
to:@return
|
|
|
|
void printf_str(void (*putc)(char) , const char *s)
|
|
printf_str: scope:[printf_str] from main::@6 main::@7 main::@9 printf_number_buffer::@5
|
|
printf_str::putc#6 = phi( main::@6/printf_str::putc#1, main::@7/printf_str::putc#2, main::@9/printf_str::putc#3, printf_number_buffer::@5/printf_str::putc#0 )
|
|
printf_str::s#6 = phi( main::@6/printf_str::s#2, main::@7/printf_str::s#3, main::@9/printf_str::s#4, printf_number_buffer::@5/printf_str::s#1 )
|
|
printf_str::c#0 = 0
|
|
to:printf_str::@1
|
|
printf_str::@1: scope:[printf_str] from printf_str printf_str::@2
|
|
printf_str::putc#5 = phi( printf_str/printf_str::putc#6, printf_str::@2/printf_str::putc#4 )
|
|
printf_str::s#5 = phi( printf_str/printf_str::s#6, printf_str::@2/printf_str::s#7 )
|
|
printf_str::c#1 = *printf_str::s#5
|
|
printf_str::$0 = printf_str::c#1
|
|
printf_str::s#0 = ++ printf_str::s#5
|
|
printf_str::$2 = 0 != printf_str::$0
|
|
if(printf_str::$2) goto printf_str::@2
|
|
to:printf_str::@return
|
|
printf_str::@2: scope:[printf_str] from printf_str::@1
|
|
printf_str::s#7 = phi( printf_str::@1/printf_str::s#0 )
|
|
printf_str::putc#4 = phi( printf_str::@1/printf_str::putc#5 )
|
|
printf_str::c#2 = phi( printf_str::@1/printf_str::c#1 )
|
|
stackpush(char) = printf_str::c#2
|
|
callexecute *printf_str::putc#4
|
|
sideeffect stackpullpadding(1)
|
|
to:printf_str::@1
|
|
printf_str::@return: scope:[printf_str] from printf_str::@1
|
|
return
|
|
to:@return
|
|
|
|
void printf_padding(void (*putc)(char) , char pad , char length)
|
|
printf_padding: scope:[printf_padding] from printf_number_buffer::@10 printf_number_buffer::@12 printf_number_buffer::@8
|
|
printf_padding::putc#5 = phi( printf_number_buffer::@10/printf_padding::putc#1, printf_number_buffer::@12/printf_padding::putc#2, printf_number_buffer::@8/printf_padding::putc#0 )
|
|
printf_padding::pad#5 = phi( printf_number_buffer::@10/printf_padding::pad#1, printf_number_buffer::@12/printf_padding::pad#2, printf_number_buffer::@8/printf_padding::pad#0 )
|
|
printf_padding::length#4 = phi( printf_number_buffer::@10/printf_padding::length#1, printf_number_buffer::@12/printf_padding::length#2, printf_number_buffer::@8/printf_padding::length#0 )
|
|
printf_padding::i#0 = 0
|
|
to:printf_padding::@1
|
|
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
|
|
printf_padding::putc#4 = phi( printf_padding/printf_padding::putc#5, printf_padding::@3/printf_padding::putc#6 )
|
|
printf_padding::pad#4 = phi( printf_padding/printf_padding::pad#5, printf_padding::@3/printf_padding::pad#6 )
|
|
printf_padding::length#3 = phi( printf_padding/printf_padding::length#4, printf_padding::@3/printf_padding::length#5 )
|
|
printf_padding::i#2 = phi( printf_padding/printf_padding::i#0, printf_padding::@3/printf_padding::i#1 )
|
|
printf_padding::$0 = printf_padding::i#2 < printf_padding::length#3
|
|
if(printf_padding::$0) goto printf_padding::@2
|
|
to:printf_padding::@return
|
|
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
|
|
printf_padding::length#6 = phi( printf_padding::@1/printf_padding::length#3 )
|
|
printf_padding::i#4 = phi( printf_padding::@1/printf_padding::i#2 )
|
|
printf_padding::putc#3 = phi( printf_padding::@1/printf_padding::putc#4 )
|
|
printf_padding::pad#3 = phi( printf_padding::@1/printf_padding::pad#4 )
|
|
stackpush(char) = printf_padding::pad#3
|
|
callexecute *printf_padding::putc#3
|
|
sideeffect stackpullpadding(1)
|
|
to:printf_padding::@3
|
|
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
|
|
printf_padding::putc#6 = phi( printf_padding::@2/printf_padding::putc#3 )
|
|
printf_padding::pad#6 = phi( printf_padding::@2/printf_padding::pad#3 )
|
|
printf_padding::length#5 = phi( printf_padding::@2/printf_padding::length#6 )
|
|
printf_padding::i#3 = phi( printf_padding::@2/printf_padding::i#4 )
|
|
printf_padding::i#1 = ++ printf_padding::i#3
|
|
to:printf_padding::@1
|
|
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
|
|
return
|
|
to:@return
|
|
|
|
void printf_uchar(void (*putc)(char) , char uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
printf_uchar: scope:[printf_uchar] from main::@8
|
|
printf_uchar::format_upper_case#5 = phi( main::@8/printf_uchar::format_upper_case#0 )
|
|
printf_uchar::format_zero_padding#5 = phi( main::@8/printf_uchar::format_zero_padding#0 )
|
|
printf_uchar::format_justify_left#5 = phi( main::@8/printf_uchar::format_justify_left#0 )
|
|
printf_uchar::format_min_length#5 = phi( main::@8/printf_uchar::format_min_length#0 )
|
|
printf_uchar::putc#5 = phi( main::@8/printf_uchar::putc#0 )
|
|
printf_uchar::format_radix#5 = phi( main::@8/printf_uchar::format_radix#0 )
|
|
printf_uchar::uvalue#4 = phi( main::@8/printf_uchar::uvalue#0 )
|
|
printf_uchar::format_sign_always#1 = phi( main::@8/printf_uchar::format_sign_always#0 )
|
|
printf_uchar::$5 = 0 != printf_uchar::format_sign_always#1
|
|
if(printf_uchar::$5) goto printf_uchar::@1
|
|
to:printf_uchar::@2
|
|
printf_uchar::@1: scope:[printf_uchar] from printf_uchar
|
|
printf_uchar::format_upper_case#3 = phi( printf_uchar/printf_uchar::format_upper_case#5 )
|
|
printf_uchar::format_zero_padding#3 = phi( printf_uchar/printf_uchar::format_zero_padding#5 )
|
|
printf_uchar::format_sign_always#4 = phi( printf_uchar/printf_uchar::format_sign_always#1 )
|
|
printf_uchar::format_justify_left#3 = phi( printf_uchar/printf_uchar::format_justify_left#5 )
|
|
printf_uchar::format_min_length#3 = phi( printf_uchar/printf_uchar::format_min_length#5 )
|
|
printf_uchar::putc#3 = phi( printf_uchar/printf_uchar::putc#5 )
|
|
printf_uchar::format_radix#3 = phi( printf_uchar/printf_uchar::format_radix#5 )
|
|
printf_uchar::uvalue#2 = phi( printf_uchar/printf_uchar::uvalue#4 )
|
|
printf_uchar::$1 = '+'
|
|
to:printf_uchar::@3
|
|
printf_uchar::@2: scope:[printf_uchar] from printf_uchar
|
|
printf_uchar::format_upper_case#4 = phi( printf_uchar/printf_uchar::format_upper_case#5 )
|
|
printf_uchar::format_zero_padding#4 = phi( printf_uchar/printf_uchar::format_zero_padding#5 )
|
|
printf_uchar::format_sign_always#5 = phi( printf_uchar/printf_uchar::format_sign_always#1 )
|
|
printf_uchar::format_justify_left#4 = phi( printf_uchar/printf_uchar::format_justify_left#5 )
|
|
printf_uchar::format_min_length#4 = phi( printf_uchar/printf_uchar::format_min_length#5 )
|
|
printf_uchar::putc#4 = phi( printf_uchar/printf_uchar::putc#5 )
|
|
printf_uchar::format_radix#4 = phi( printf_uchar/printf_uchar::format_radix#5 )
|
|
printf_uchar::uvalue#3 = phi( printf_uchar/printf_uchar::uvalue#4 )
|
|
printf_uchar::$0 = 0
|
|
to:printf_uchar::@3
|
|
printf_uchar::@3: scope:[printf_uchar] from printf_uchar::@1 printf_uchar::@2
|
|
printf_uchar::format_upper_case#2 = phi( printf_uchar::@1/printf_uchar::format_upper_case#3, printf_uchar::@2/printf_uchar::format_upper_case#4 )
|
|
printf_uchar::format_zero_padding#2 = phi( printf_uchar::@1/printf_uchar::format_zero_padding#3, printf_uchar::@2/printf_uchar::format_zero_padding#4 )
|
|
printf_uchar::format_sign_always#3 = phi( printf_uchar::@1/printf_uchar::format_sign_always#4, printf_uchar::@2/printf_uchar::format_sign_always#5 )
|
|
printf_uchar::format_justify_left#2 = phi( printf_uchar::@1/printf_uchar::format_justify_left#3, printf_uchar::@2/printf_uchar::format_justify_left#4 )
|
|
printf_uchar::format_min_length#2 = phi( printf_uchar::@1/printf_uchar::format_min_length#3, printf_uchar::@2/printf_uchar::format_min_length#4 )
|
|
printf_uchar::putc#2 = phi( printf_uchar::@1/printf_uchar::putc#3, printf_uchar::@2/printf_uchar::putc#4 )
|
|
printf_uchar::format_radix#1 = phi( printf_uchar::@1/printf_uchar::format_radix#3, printf_uchar::@2/printf_uchar::format_radix#4 )
|
|
printf_uchar::uvalue#1 = phi( printf_uchar::@1/printf_uchar::uvalue#2, printf_uchar::@2/printf_uchar::uvalue#3 )
|
|
printf_uchar::$2 = phi( printf_uchar::@1/printf_uchar::$1, printf_uchar::@2/printf_uchar::$0 )
|
|
*((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) = printf_uchar::$2
|
|
uctoa::value#1 = printf_uchar::uvalue#1
|
|
uctoa::buffer#5 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
uctoa::radix#0 = printf_uchar::format_radix#1
|
|
call uctoa
|
|
to:printf_uchar::@4
|
|
printf_uchar::@4: scope:[printf_uchar] from printf_uchar::@3
|
|
printf_uchar::format_radix#2 = phi( printf_uchar::@3/printf_uchar::format_radix#1 )
|
|
printf_uchar::format_upper_case#1 = phi( printf_uchar::@3/printf_uchar::format_upper_case#2 )
|
|
printf_uchar::format_zero_padding#1 = phi( printf_uchar::@3/printf_uchar::format_zero_padding#2 )
|
|
printf_uchar::format_sign_always#2 = phi( printf_uchar::@3/printf_uchar::format_sign_always#3 )
|
|
printf_uchar::format_justify_left#1 = phi( printf_uchar::@3/printf_uchar::format_justify_left#2 )
|
|
printf_uchar::format_min_length#1 = phi( printf_uchar::@3/printf_uchar::format_min_length#2 )
|
|
printf_uchar::putc#1 = phi( printf_uchar::@3/printf_uchar::putc#2 )
|
|
printf_number_buffer::putc#0 = printf_uchar::putc#1
|
|
printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN)
|
|
printf_number_buffer::buffer_digits#0 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
printf_number_buffer::format_min_length#0 = printf_uchar::format_min_length#1
|
|
printf_number_buffer::format_justify_left#0 = printf_uchar::format_justify_left#1
|
|
printf_number_buffer::format_sign_always#0 = printf_uchar::format_sign_always#2
|
|
printf_number_buffer::format_zero_padding#0 = printf_uchar::format_zero_padding#1
|
|
printf_number_buffer::format_upper_case#0 = printf_uchar::format_upper_case#1
|
|
printf_number_buffer::format_radix#0 = printf_uchar::format_radix#2
|
|
call printf_number_buffer
|
|
to:printf_uchar::@5
|
|
printf_uchar::@5: scope:[printf_uchar] from printf_uchar::@4
|
|
to:printf_uchar::@return
|
|
printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@5
|
|
return
|
|
to:@return
|
|
|
|
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
printf_number_buffer: scope:[printf_number_buffer] from printf_uchar::@4
|
|
printf_number_buffer::format_upper_case#9 = phi( printf_uchar::@4/printf_number_buffer::format_upper_case#0 )
|
|
printf_number_buffer::putc#12 = phi( printf_uchar::@4/printf_number_buffer::putc#0 )
|
|
printf_number_buffer::buffer_sign#7 = phi( printf_uchar::@4/printf_number_buffer::buffer_sign#0 )
|
|
printf_number_buffer::buffer_digits#4 = phi( printf_uchar::@4/printf_number_buffer::buffer_digits#0 )
|
|
printf_number_buffer::format_zero_padding#4 = phi( printf_uchar::@4/printf_number_buffer::format_zero_padding#0 )
|
|
printf_number_buffer::format_justify_left#3 = phi( printf_uchar::@4/printf_number_buffer::format_justify_left#0 )
|
|
printf_number_buffer::format_min_length#1 = phi( printf_uchar::@4/printf_number_buffer::format_min_length#0 )
|
|
printf_number_buffer::padding#0 = 0
|
|
printf_number_buffer::$26 = 0 != printf_number_buffer::format_min_length#1
|
|
printf_number_buffer::$0 = ! printf_number_buffer::$26
|
|
if(printf_number_buffer::$0) goto printf_number_buffer::@1
|
|
to:printf_number_buffer::@6
|
|
printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@13 printf_number_buffer::@14
|
|
printf_number_buffer::buffer_digits#12 = phi( printf_number_buffer/printf_number_buffer::buffer_digits#4, printf_number_buffer::@13/printf_number_buffer::buffer_digits#14, printf_number_buffer::@14/printf_number_buffer::buffer_digits#15 )
|
|
printf_number_buffer::format_upper_case#7 = phi( printf_number_buffer/printf_number_buffer::format_upper_case#9, printf_number_buffer::@13/printf_number_buffer::format_upper_case#10, printf_number_buffer::@14/printf_number_buffer::format_upper_case#11 )
|
|
printf_number_buffer::putc#6 = phi( printf_number_buffer/printf_number_buffer::putc#12, printf_number_buffer::@13/printf_number_buffer::putc#13, printf_number_buffer::@14/printf_number_buffer::putc#14 )
|
|
printf_number_buffer::buffer_sign#5 = phi( printf_number_buffer/printf_number_buffer::buffer_sign#7, printf_number_buffer::@13/printf_number_buffer::buffer_sign#8, printf_number_buffer::@14/printf_number_buffer::buffer_sign#9 )
|
|
printf_number_buffer::padding#3 = phi( printf_number_buffer/printf_number_buffer::padding#0, printf_number_buffer::@13/printf_number_buffer::padding#1, printf_number_buffer::@14/printf_number_buffer::padding#2 )
|
|
printf_number_buffer::format_zero_padding#1 = phi( printf_number_buffer/printf_number_buffer::format_zero_padding#4, printf_number_buffer::@13/printf_number_buffer::format_zero_padding#5, printf_number_buffer::@14/printf_number_buffer::format_zero_padding#6 )
|
|
printf_number_buffer::format_justify_left#1 = phi( printf_number_buffer/printf_number_buffer::format_justify_left#3, printf_number_buffer::@13/printf_number_buffer::format_justify_left#4, printf_number_buffer::@14/printf_number_buffer::format_justify_left#5 )
|
|
printf_number_buffer::$27 = 0 != printf_number_buffer::format_justify_left#1
|
|
printf_number_buffer::$1 = ! printf_number_buffer::$27
|
|
printf_number_buffer::$28 = 0 != printf_number_buffer::format_zero_padding#1
|
|
printf_number_buffer::$2 = ! printf_number_buffer::$28
|
|
printf_number_buffer::$3 = printf_number_buffer::$1 && printf_number_buffer::$2
|
|
printf_number_buffer::$4 = printf_number_buffer::$3 && printf_number_buffer::padding#3
|
|
printf_number_buffer::$5 = ! printf_number_buffer::$4
|
|
if(printf_number_buffer::$5) goto printf_number_buffer::@2
|
|
to:printf_number_buffer::@8
|
|
printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer
|
|
printf_number_buffer::format_upper_case#15 = phi( printf_number_buffer/printf_number_buffer::format_upper_case#9 )
|
|
printf_number_buffer::putc#20 = phi( printf_number_buffer/printf_number_buffer::putc#12 )
|
|
printf_number_buffer::format_zero_padding#15 = phi( printf_number_buffer/printf_number_buffer::format_zero_padding#4 )
|
|
printf_number_buffer::format_justify_left#11 = phi( printf_number_buffer/printf_number_buffer::format_justify_left#3 )
|
|
printf_number_buffer::format_min_length#5 = phi( printf_number_buffer/printf_number_buffer::format_min_length#1 )
|
|
printf_number_buffer::buffer_sign#4 = phi( printf_number_buffer/printf_number_buffer::buffer_sign#7 )
|
|
printf_number_buffer::buffer_digits#1 = phi( printf_number_buffer/printf_number_buffer::buffer_digits#4 )
|
|
strlen::str#1 = printf_number_buffer::buffer_digits#1
|
|
call strlen
|
|
strlen::return#2 = strlen::return#1
|
|
to:printf_number_buffer::@15
|
|
printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@6
|
|
printf_number_buffer::buffer_digits#17 = phi( printf_number_buffer::@6/printf_number_buffer::buffer_digits#1 )
|
|
printf_number_buffer::format_upper_case#13 = phi( printf_number_buffer::@6/printf_number_buffer::format_upper_case#15 )
|
|
printf_number_buffer::putc#18 = phi( printf_number_buffer::@6/printf_number_buffer::putc#20 )
|
|
printf_number_buffer::format_zero_padding#10 = phi( printf_number_buffer::@6/printf_number_buffer::format_zero_padding#15 )
|
|
printf_number_buffer::format_justify_left#7 = phi( printf_number_buffer::@6/printf_number_buffer::format_justify_left#11 )
|
|
printf_number_buffer::format_min_length#3 = phi( printf_number_buffer::@6/printf_number_buffer::format_min_length#5 )
|
|
printf_number_buffer::buffer_sign#1 = phi( printf_number_buffer::@6/printf_number_buffer::buffer_sign#4 )
|
|
strlen::return#4 = phi( printf_number_buffer::@6/strlen::return#2 )
|
|
printf_number_buffer::$19 = strlen::return#4
|
|
printf_number_buffer::len#0 = (signed char)printf_number_buffer::$19
|
|
printf_number_buffer::$29 = 0 != printf_number_buffer::buffer_sign#1
|
|
printf_number_buffer::$20 = ! printf_number_buffer::$29
|
|
if(printf_number_buffer::$20) goto printf_number_buffer::@13
|
|
to:printf_number_buffer::@7
|
|
printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@15 printf_number_buffer::@7
|
|
printf_number_buffer::buffer_digits#14 = phi( printf_number_buffer::@15/printf_number_buffer::buffer_digits#17, printf_number_buffer::@7/printf_number_buffer::buffer_digits#18 )
|
|
printf_number_buffer::format_upper_case#10 = phi( printf_number_buffer::@15/printf_number_buffer::format_upper_case#13, printf_number_buffer::@7/printf_number_buffer::format_upper_case#14 )
|
|
printf_number_buffer::putc#13 = phi( printf_number_buffer::@15/printf_number_buffer::putc#18, printf_number_buffer::@7/printf_number_buffer::putc#19 )
|
|
printf_number_buffer::buffer_sign#8 = phi( printf_number_buffer::@15/printf_number_buffer::buffer_sign#1, printf_number_buffer::@7/printf_number_buffer::buffer_sign#11 )
|
|
printf_number_buffer::format_zero_padding#5 = phi( printf_number_buffer::@15/printf_number_buffer::format_zero_padding#10, printf_number_buffer::@7/printf_number_buffer::format_zero_padding#11 )
|
|
printf_number_buffer::format_justify_left#4 = phi( printf_number_buffer::@15/printf_number_buffer::format_justify_left#7, printf_number_buffer::@7/printf_number_buffer::format_justify_left#8 )
|
|
printf_number_buffer::len#2 = phi( printf_number_buffer::@15/printf_number_buffer::len#0, printf_number_buffer::@7/printf_number_buffer::len#1 )
|
|
printf_number_buffer::format_min_length#2 = phi( printf_number_buffer::@15/printf_number_buffer::format_min_length#3, printf_number_buffer::@7/printf_number_buffer::format_min_length#4 )
|
|
printf_number_buffer::$25 = (signed char)printf_number_buffer::format_min_length#2
|
|
printf_number_buffer::$21 = printf_number_buffer::$25 - printf_number_buffer::len#2
|
|
printf_number_buffer::padding#1 = printf_number_buffer::$21
|
|
printf_number_buffer::$22 = printf_number_buffer::padding#1 < 0
|
|
printf_number_buffer::$23 = ! printf_number_buffer::$22
|
|
if(printf_number_buffer::$23) goto printf_number_buffer::@1
|
|
to:printf_number_buffer::@14
|
|
printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@15
|
|
printf_number_buffer::buffer_digits#18 = phi( printf_number_buffer::@15/printf_number_buffer::buffer_digits#17 )
|
|
printf_number_buffer::format_upper_case#14 = phi( printf_number_buffer::@15/printf_number_buffer::format_upper_case#13 )
|
|
printf_number_buffer::putc#19 = phi( printf_number_buffer::@15/printf_number_buffer::putc#18 )
|
|
printf_number_buffer::buffer_sign#11 = phi( printf_number_buffer::@15/printf_number_buffer::buffer_sign#1 )
|
|
printf_number_buffer::format_zero_padding#11 = phi( printf_number_buffer::@15/printf_number_buffer::format_zero_padding#10 )
|
|
printf_number_buffer::format_justify_left#8 = phi( printf_number_buffer::@15/printf_number_buffer::format_justify_left#7 )
|
|
printf_number_buffer::format_min_length#4 = phi( printf_number_buffer::@15/printf_number_buffer::format_min_length#3 )
|
|
printf_number_buffer::len#3 = phi( printf_number_buffer::@15/printf_number_buffer::len#0 )
|
|
printf_number_buffer::len#1 = ++ printf_number_buffer::len#3
|
|
to:printf_number_buffer::@13
|
|
printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@13
|
|
printf_number_buffer::buffer_digits#15 = phi( printf_number_buffer::@13/printf_number_buffer::buffer_digits#14 )
|
|
printf_number_buffer::format_upper_case#11 = phi( printf_number_buffer::@13/printf_number_buffer::format_upper_case#10 )
|
|
printf_number_buffer::putc#14 = phi( printf_number_buffer::@13/printf_number_buffer::putc#13 )
|
|
printf_number_buffer::buffer_sign#9 = phi( printf_number_buffer::@13/printf_number_buffer::buffer_sign#8 )
|
|
printf_number_buffer::format_zero_padding#6 = phi( printf_number_buffer::@13/printf_number_buffer::format_zero_padding#5 )
|
|
printf_number_buffer::format_justify_left#5 = phi( printf_number_buffer::@13/printf_number_buffer::format_justify_left#4 )
|
|
printf_number_buffer::padding#2 = 0
|
|
to:printf_number_buffer::@1
|
|
printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@16
|
|
printf_number_buffer::format_justify_left#15 = phi( printf_number_buffer::@1/printf_number_buffer::format_justify_left#1, printf_number_buffer::@16/printf_number_buffer::format_justify_left#18 )
|
|
printf_number_buffer::buffer_digits#9 = phi( printf_number_buffer::@1/printf_number_buffer::buffer_digits#12, printf_number_buffer::@16/printf_number_buffer::buffer_digits#13 )
|
|
printf_number_buffer::format_upper_case#4 = phi( printf_number_buffer::@1/printf_number_buffer::format_upper_case#7, printf_number_buffer::@16/printf_number_buffer::format_upper_case#8 )
|
|
printf_number_buffer::putc#7 = phi( printf_number_buffer::@1/printf_number_buffer::putc#6, printf_number_buffer::@16/printf_number_buffer::putc#15 )
|
|
printf_number_buffer::padding#9 = phi( printf_number_buffer::@1/printf_number_buffer::padding#3, printf_number_buffer::@16/printf_number_buffer::padding#12 )
|
|
printf_number_buffer::format_zero_padding#7 = phi( printf_number_buffer::@1/printf_number_buffer::format_zero_padding#1, printf_number_buffer::@16/printf_number_buffer::format_zero_padding#12 )
|
|
printf_number_buffer::buffer_sign#2 = phi( printf_number_buffer::@1/printf_number_buffer::buffer_sign#5, printf_number_buffer::@16/printf_number_buffer::buffer_sign#6 )
|
|
printf_number_buffer::$30 = 0 != printf_number_buffer::buffer_sign#2
|
|
printf_number_buffer::$7 = ! printf_number_buffer::$30
|
|
if(printf_number_buffer::$7) goto printf_number_buffer::@3
|
|
to:printf_number_buffer::@9
|
|
printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@1
|
|
printf_number_buffer::format_justify_left#19 = phi( printf_number_buffer::@1/printf_number_buffer::format_justify_left#1 )
|
|
printf_number_buffer::buffer_digits#16 = phi( printf_number_buffer::@1/printf_number_buffer::buffer_digits#12 )
|
|
printf_number_buffer::format_upper_case#12 = phi( printf_number_buffer::@1/printf_number_buffer::format_upper_case#7 )
|
|
printf_number_buffer::format_zero_padding#16 = phi( printf_number_buffer::@1/printf_number_buffer::format_zero_padding#1 )
|
|
printf_number_buffer::buffer_sign#10 = phi( printf_number_buffer::@1/printf_number_buffer::buffer_sign#5 )
|
|
printf_number_buffer::padding#4 = phi( printf_number_buffer::@1/printf_number_buffer::padding#3 )
|
|
printf_number_buffer::putc#1 = phi( printf_number_buffer::@1/printf_number_buffer::putc#6 )
|
|
printf_padding::putc#0 = printf_number_buffer::putc#1
|
|
printf_padding::pad#0 = ' '
|
|
printf_padding::length#0 = (char)printf_number_buffer::padding#4
|
|
call printf_padding
|
|
to:printf_number_buffer::@16
|
|
printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@8
|
|
printf_number_buffer::format_justify_left#18 = phi( printf_number_buffer::@8/printf_number_buffer::format_justify_left#19 )
|
|
printf_number_buffer::buffer_digits#13 = phi( printf_number_buffer::@8/printf_number_buffer::buffer_digits#16 )
|
|
printf_number_buffer::format_upper_case#8 = phi( printf_number_buffer::@8/printf_number_buffer::format_upper_case#12 )
|
|
printf_number_buffer::putc#15 = phi( printf_number_buffer::@8/printf_number_buffer::putc#1 )
|
|
printf_number_buffer::padding#12 = phi( printf_number_buffer::@8/printf_number_buffer::padding#4 )
|
|
printf_number_buffer::format_zero_padding#12 = phi( printf_number_buffer::@8/printf_number_buffer::format_zero_padding#16 )
|
|
printf_number_buffer::buffer_sign#6 = phi( printf_number_buffer::@8/printf_number_buffer::buffer_sign#10 )
|
|
to:printf_number_buffer::@2
|
|
printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@2 printf_number_buffer::@9
|
|
printf_number_buffer::format_justify_left#13 = phi( printf_number_buffer::@2/printf_number_buffer::format_justify_left#15, printf_number_buffer::@9/printf_number_buffer::format_justify_left#16 )
|
|
printf_number_buffer::buffer_digits#8 = phi( printf_number_buffer::@2/printf_number_buffer::buffer_digits#9, printf_number_buffer::@9/printf_number_buffer::buffer_digits#10 )
|
|
printf_number_buffer::putc#8 = phi( printf_number_buffer::@2/printf_number_buffer::putc#7, printf_number_buffer::@9/printf_number_buffer::putc#2 )
|
|
printf_number_buffer::format_upper_case#3 = phi( printf_number_buffer::@2/printf_number_buffer::format_upper_case#4, printf_number_buffer::@9/printf_number_buffer::format_upper_case#5 )
|
|
printf_number_buffer::padding#5 = phi( printf_number_buffer::@2/printf_number_buffer::padding#9, printf_number_buffer::@9/printf_number_buffer::padding#10 )
|
|
printf_number_buffer::format_zero_padding#2 = phi( printf_number_buffer::@2/printf_number_buffer::format_zero_padding#7, printf_number_buffer::@9/printf_number_buffer::format_zero_padding#8 )
|
|
printf_number_buffer::$9 = printf_number_buffer::format_zero_padding#2 && printf_number_buffer::padding#5
|
|
printf_number_buffer::$10 = ! printf_number_buffer::$9
|
|
if(printf_number_buffer::$10) goto printf_number_buffer::@4
|
|
to:printf_number_buffer::@10
|
|
printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@2
|
|
printf_number_buffer::format_justify_left#16 = phi( printf_number_buffer::@2/printf_number_buffer::format_justify_left#15 )
|
|
printf_number_buffer::buffer_digits#10 = phi( printf_number_buffer::@2/printf_number_buffer::buffer_digits#9 )
|
|
printf_number_buffer::format_upper_case#5 = phi( printf_number_buffer::@2/printf_number_buffer::format_upper_case#4 )
|
|
printf_number_buffer::padding#10 = phi( printf_number_buffer::@2/printf_number_buffer::padding#9 )
|
|
printf_number_buffer::format_zero_padding#8 = phi( printf_number_buffer::@2/printf_number_buffer::format_zero_padding#7 )
|
|
printf_number_buffer::putc#2 = phi( printf_number_buffer::@2/printf_number_buffer::putc#7 )
|
|
printf_number_buffer::buffer_sign#3 = phi( printf_number_buffer::@2/printf_number_buffer::buffer_sign#2 )
|
|
stackpush(char) = printf_number_buffer::buffer_sign#3
|
|
callexecute *printf_number_buffer::putc#2
|
|
sideeffect stackpullpadding(1)
|
|
to:printf_number_buffer::@3
|
|
printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@17 printf_number_buffer::@3
|
|
printf_number_buffer::padding#14 = phi( printf_number_buffer::@17/printf_number_buffer::padding#15, printf_number_buffer::@3/printf_number_buffer::padding#5 )
|
|
printf_number_buffer::format_justify_left#10 = phi( printf_number_buffer::@17/printf_number_buffer::format_justify_left#12, printf_number_buffer::@3/printf_number_buffer::format_justify_left#13 )
|
|
printf_number_buffer::format_zero_padding#14 = phi( printf_number_buffer::@17/printf_number_buffer::format_zero_padding#17, printf_number_buffer::@3/printf_number_buffer::format_zero_padding#2 )
|
|
printf_number_buffer::buffer_digits#6 = phi( printf_number_buffer::@17/printf_number_buffer::buffer_digits#7, printf_number_buffer::@3/printf_number_buffer::buffer_digits#8 )
|
|
printf_number_buffer::putc#10 = phi( printf_number_buffer::@17/printf_number_buffer::putc#16, printf_number_buffer::@3/printf_number_buffer::putc#8 )
|
|
printf_number_buffer::format_upper_case#1 = phi( printf_number_buffer::@17/printf_number_buffer::format_upper_case#2, printf_number_buffer::@3/printf_number_buffer::format_upper_case#3 )
|
|
printf_number_buffer::$31 = 0 != printf_number_buffer::format_upper_case#1
|
|
printf_number_buffer::$12 = ! printf_number_buffer::$31
|
|
if(printf_number_buffer::$12) goto printf_number_buffer::@5
|
|
to:printf_number_buffer::@11
|
|
printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@3
|
|
printf_number_buffer::format_justify_left#17 = phi( printf_number_buffer::@3/printf_number_buffer::format_justify_left#13 )
|
|
printf_number_buffer::format_zero_padding#19 = phi( printf_number_buffer::@3/printf_number_buffer::format_zero_padding#2 )
|
|
printf_number_buffer::buffer_digits#11 = phi( printf_number_buffer::@3/printf_number_buffer::buffer_digits#8 )
|
|
printf_number_buffer::format_upper_case#6 = phi( printf_number_buffer::@3/printf_number_buffer::format_upper_case#3 )
|
|
printf_number_buffer::padding#6 = phi( printf_number_buffer::@3/printf_number_buffer::padding#5 )
|
|
printf_number_buffer::putc#3 = phi( printf_number_buffer::@3/printf_number_buffer::putc#8 )
|
|
printf_padding::putc#1 = printf_number_buffer::putc#3
|
|
printf_padding::pad#1 = '0'
|
|
printf_padding::length#1 = (char)printf_number_buffer::padding#6
|
|
call printf_padding
|
|
to:printf_number_buffer::@17
|
|
printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@10
|
|
printf_number_buffer::padding#15 = phi( printf_number_buffer::@10/printf_number_buffer::padding#6 )
|
|
printf_number_buffer::format_justify_left#12 = phi( printf_number_buffer::@10/printf_number_buffer::format_justify_left#17 )
|
|
printf_number_buffer::format_zero_padding#17 = phi( printf_number_buffer::@10/printf_number_buffer::format_zero_padding#19 )
|
|
printf_number_buffer::buffer_digits#7 = phi( printf_number_buffer::@10/printf_number_buffer::buffer_digits#11 )
|
|
printf_number_buffer::putc#16 = phi( printf_number_buffer::@10/printf_number_buffer::putc#3 )
|
|
printf_number_buffer::format_upper_case#2 = phi( printf_number_buffer::@10/printf_number_buffer::format_upper_case#6 )
|
|
to:printf_number_buffer::@4
|
|
printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer::@19 printf_number_buffer::@4
|
|
printf_number_buffer::padding#11 = phi( printf_number_buffer::@19/printf_number_buffer::padding#13, printf_number_buffer::@4/printf_number_buffer::padding#14 )
|
|
printf_number_buffer::format_justify_left#6 = phi( printf_number_buffer::@19/printf_number_buffer::format_justify_left#9, printf_number_buffer::@4/printf_number_buffer::format_justify_left#10 )
|
|
printf_number_buffer::format_zero_padding#9 = phi( printf_number_buffer::@19/printf_number_buffer::format_zero_padding#13, printf_number_buffer::@4/printf_number_buffer::format_zero_padding#14 )
|
|
printf_number_buffer::buffer_digits#2 = phi( printf_number_buffer::@19/printf_number_buffer::buffer_digits#5, printf_number_buffer::@4/printf_number_buffer::buffer_digits#6 )
|
|
printf_number_buffer::putc#4 = phi( printf_number_buffer::@19/printf_number_buffer::putc#9, printf_number_buffer::@4/printf_number_buffer::putc#10 )
|
|
printf_str::putc#0 = printf_number_buffer::putc#4
|
|
printf_str::s#1 = printf_number_buffer::buffer_digits#2
|
|
call printf_str
|
|
to:printf_number_buffer::@18
|
|
printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@5
|
|
printf_number_buffer::putc#11 = phi( printf_number_buffer::@5/printf_number_buffer::putc#4 )
|
|
printf_number_buffer::padding#7 = phi( printf_number_buffer::@5/printf_number_buffer::padding#11 )
|
|
printf_number_buffer::format_justify_left#2 = phi( printf_number_buffer::@5/printf_number_buffer::format_justify_left#6 )
|
|
printf_number_buffer::format_zero_padding#3 = phi( printf_number_buffer::@5/printf_number_buffer::format_zero_padding#9 )
|
|
printf_number_buffer::$32 = 0 != printf_number_buffer::format_zero_padding#3
|
|
printf_number_buffer::$14 = ! printf_number_buffer::$32
|
|
printf_number_buffer::$15 = printf_number_buffer::format_justify_left#2 && printf_number_buffer::$14
|
|
printf_number_buffer::$16 = printf_number_buffer::$15 && printf_number_buffer::padding#7
|
|
printf_number_buffer::$17 = ! printf_number_buffer::$16
|
|
if(printf_number_buffer::$17) goto printf_number_buffer::@return
|
|
to:printf_number_buffer::@12
|
|
printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@4
|
|
printf_number_buffer::padding#16 = phi( printf_number_buffer::@4/printf_number_buffer::padding#14 )
|
|
printf_number_buffer::format_justify_left#14 = phi( printf_number_buffer::@4/printf_number_buffer::format_justify_left#10 )
|
|
printf_number_buffer::format_zero_padding#18 = phi( printf_number_buffer::@4/printf_number_buffer::format_zero_padding#14 )
|
|
printf_number_buffer::putc#17 = phi( printf_number_buffer::@4/printf_number_buffer::putc#10 )
|
|
printf_number_buffer::buffer_digits#3 = phi( printf_number_buffer::@4/printf_number_buffer::buffer_digits#6 )
|
|
strupr::str#0 = printf_number_buffer::buffer_digits#3
|
|
call strupr
|
|
strupr::return#2 = strupr::return#1
|
|
to:printf_number_buffer::@19
|
|
printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@11
|
|
printf_number_buffer::padding#13 = phi( printf_number_buffer::@11/printf_number_buffer::padding#16 )
|
|
printf_number_buffer::format_justify_left#9 = phi( printf_number_buffer::@11/printf_number_buffer::format_justify_left#14 )
|
|
printf_number_buffer::format_zero_padding#13 = phi( printf_number_buffer::@11/printf_number_buffer::format_zero_padding#18 )
|
|
printf_number_buffer::buffer_digits#5 = phi( printf_number_buffer::@11/printf_number_buffer::buffer_digits#3 )
|
|
printf_number_buffer::putc#9 = phi( printf_number_buffer::@11/printf_number_buffer::putc#17 )
|
|
to:printf_number_buffer::@5
|
|
printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@18
|
|
printf_number_buffer::padding#8 = phi( printf_number_buffer::@18/printf_number_buffer::padding#7 )
|
|
printf_number_buffer::putc#5 = phi( printf_number_buffer::@18/printf_number_buffer::putc#11 )
|
|
printf_padding::putc#2 = printf_number_buffer::putc#5
|
|
printf_padding::pad#2 = ' '
|
|
printf_padding::length#2 = (char)printf_number_buffer::padding#8
|
|
call printf_padding
|
|
to:printf_number_buffer::@20
|
|
printf_number_buffer::@20: scope:[printf_number_buffer] from printf_number_buffer::@12
|
|
to:printf_number_buffer::@return
|
|
printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@18 printf_number_buffer::@20
|
|
return
|
|
to:@return
|
|
|
|
int main()
|
|
main: scope:[main] from __start::@1
|
|
main::toD0181_screen#0 = DEFAULT_SCREEN
|
|
main::toD0181_gfx#0 = DEFAULT_FONT_MIXED
|
|
to:main::toD0181
|
|
main::toD0181: scope:[main] from main
|
|
main::toD0181_gfx#1 = phi( main/main::toD0181_gfx#0 )
|
|
main::toD0181_screen#1 = phi( main/main::toD0181_screen#0 )
|
|
main::toD0181_$7 = (unsigned int)main::toD0181_screen#1
|
|
main::toD0181_$0 = main::toD0181_$7 & $3fff
|
|
main::toD0181_$1 = main::toD0181_$0 * 4
|
|
main::toD0181_$2 = byte1 main::toD0181_$1
|
|
main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#1
|
|
main::toD0181_$4 = main::toD0181_$3 / 4
|
|
main::toD0181_$5 = main::toD0181_$4 & $f
|
|
main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
|
|
main::toD0181_return#0 = main::toD0181_$6
|
|
to:main::toD0181_@return
|
|
main::toD0181_@return: scope:[main] from main::toD0181
|
|
main::toD0181_return#2 = phi( main::toD0181/main::toD0181_return#0 )
|
|
main::toD0181_return#1 = main::toD0181_return#2
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::toD0181_@return
|
|
main::toD0181_return#3 = phi( main::toD0181_@return/main::toD0181_return#1 )
|
|
main::$0 = main::toD0181_return#3
|
|
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = main::$0
|
|
call clrscr
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@3
|
|
main::current#0 = 0
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@10 main::@4 main::@5
|
|
main::current#3 = phi( main::@10/main::current#1, main::@4/main::current#0, main::@5/main::current#2 )
|
|
call GETIN
|
|
GETIN::return#0 = GETIN::return#2
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@1
|
|
main::current#2 = phi( main::@1/main::current#3 )
|
|
GETIN::return#3 = phi( main::@1/GETIN::return#0 )
|
|
main::ch#0 = GETIN::return#3
|
|
main::$3 = main::ch#0 != main::current#2
|
|
main::$4 = main::ch#0 && main::$3
|
|
main::$5 = ! main::$4
|
|
if(main::$5) goto main::@1
|
|
to:main::@2
|
|
main::@2: scope:[main] from main::@5
|
|
main::ch#1 = phi( main::@5/main::ch#0 )
|
|
petscii_to_screencode::petscii#0 = main::ch#1
|
|
call petscii_to_screencode
|
|
petscii_to_screencode::return#0 = petscii_to_screencode::return#8
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@2
|
|
main::ch#6 = phi( main::@2/main::ch#1 )
|
|
petscii_to_screencode::return#9 = phi( main::@2/petscii_to_screencode::return#0 )
|
|
main::$6 = petscii_to_screencode::return#9
|
|
printf_str::putc#1 = &cputc
|
|
printf_str::s#2 = main::s
|
|
call printf_str
|
|
to:main::@7
|
|
main::@7: scope:[main] from main::@6
|
|
main::ch#4 = phi( main::@6/main::ch#6 )
|
|
stackpush(char) = main::$6
|
|
callexecute cputc
|
|
sideeffect stackpullpadding(1)
|
|
printf_str::putc#2 = &cputc
|
|
printf_str::s#3 = main::s1
|
|
call printf_str
|
|
to:main::@8
|
|
main::@8: scope:[main] from main::@7
|
|
main::ch#2 = phi( main::@7/main::ch#4 )
|
|
printf_uchar::putc#0 = &cputc
|
|
printf_uchar::uvalue#0 = main::ch#2
|
|
printf_uchar::format_min_length#0 = 2
|
|
printf_uchar::format_justify_left#0 = 0
|
|
printf_uchar::format_sign_always#0 = 0
|
|
printf_uchar::format_zero_padding#0 = 0
|
|
printf_uchar::format_upper_case#0 = 0
|
|
printf_uchar::format_radix#0 = HEXADECIMAL
|
|
call printf_uchar
|
|
to:main::@9
|
|
main::@9: scope:[main] from main::@8
|
|
main::ch#5 = phi( main::@8/main::ch#2 )
|
|
printf_str::putc#3 = &cputc
|
|
printf_str::s#4 = main::s2
|
|
call printf_str
|
|
to:main::@10
|
|
main::@10: scope:[main] from main::@9
|
|
main::ch#3 = phi( main::@9/main::ch#5 )
|
|
main::current#1 = main::ch#3
|
|
to:main::@1
|
|
main::@return: scope:[main] from
|
|
main::return#2 = phi( )
|
|
main::return#0 = main::return#2
|
|
return
|
|
to:@return
|
|
|
|
char petscii_to_screencode(char petscii)
|
|
petscii_to_screencode: scope:[petscii_to_screencode] from main::@2
|
|
petscii_to_screencode::petscii#1 = phi( main::@2/petscii_to_screencode::petscii#0 )
|
|
petscii_to_screencode::$0 = petscii_to_screencode::petscii#1 < $20
|
|
if(petscii_to_screencode::$0) goto petscii_to_screencode::@1
|
|
to:petscii_to_screencode::@7
|
|
petscii_to_screencode::@1: scope:[petscii_to_screencode] from petscii_to_screencode
|
|
petscii_to_screencode::petscii#2 = phi( petscii_to_screencode/petscii_to_screencode::petscii#1 )
|
|
petscii_to_screencode::$10 = petscii_to_screencode::petscii#2 + $80
|
|
petscii_to_screencode::return#1 = petscii_to_screencode::$10
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@7: scope:[petscii_to_screencode] from petscii_to_screencode
|
|
petscii_to_screencode::petscii#3 = phi( petscii_to_screencode/petscii_to_screencode::petscii#1 )
|
|
petscii_to_screencode::$1 = petscii_to_screencode::petscii#3 < $40
|
|
if(petscii_to_screencode::$1) goto petscii_to_screencode::@2
|
|
to:petscii_to_screencode::@8
|
|
petscii_to_screencode::@2: scope:[petscii_to_screencode] from petscii_to_screencode::@7
|
|
petscii_to_screencode::petscii#4 = phi( petscii_to_screencode::@7/petscii_to_screencode::petscii#3 )
|
|
petscii_to_screencode::return#2 = petscii_to_screencode::petscii#4
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@8: scope:[petscii_to_screencode] from petscii_to_screencode::@7
|
|
petscii_to_screencode::petscii#5 = phi( petscii_to_screencode::@7/petscii_to_screencode::petscii#3 )
|
|
petscii_to_screencode::$2 = petscii_to_screencode::petscii#5 < $60
|
|
if(petscii_to_screencode::$2) goto petscii_to_screencode::@3
|
|
to:petscii_to_screencode::@9
|
|
petscii_to_screencode::@3: scope:[petscii_to_screencode] from petscii_to_screencode::@8
|
|
petscii_to_screencode::petscii#6 = phi( petscii_to_screencode::@8/petscii_to_screencode::petscii#5 )
|
|
petscii_to_screencode::$9 = petscii_to_screencode::petscii#6 - $40
|
|
petscii_to_screencode::return#3 = petscii_to_screencode::$9
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@9: scope:[petscii_to_screencode] from petscii_to_screencode::@8
|
|
petscii_to_screencode::petscii#7 = phi( petscii_to_screencode::@8/petscii_to_screencode::petscii#5 )
|
|
petscii_to_screencode::$3 = petscii_to_screencode::petscii#7 < $80
|
|
if(petscii_to_screencode::$3) goto petscii_to_screencode::@4
|
|
to:petscii_to_screencode::@10
|
|
petscii_to_screencode::@4: scope:[petscii_to_screencode] from petscii_to_screencode::@9
|
|
petscii_to_screencode::petscii#8 = phi( petscii_to_screencode::@9/petscii_to_screencode::petscii#7 )
|
|
petscii_to_screencode::$8 = petscii_to_screencode::petscii#8 - $20
|
|
petscii_to_screencode::return#4 = petscii_to_screencode::$8
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@10: scope:[petscii_to_screencode] from petscii_to_screencode::@9
|
|
petscii_to_screencode::petscii#9 = phi( petscii_to_screencode::@9/petscii_to_screencode::petscii#7 )
|
|
petscii_to_screencode::$4 = petscii_to_screencode::petscii#9 < $a0
|
|
if(petscii_to_screencode::$4) goto petscii_to_screencode::@5
|
|
to:petscii_to_screencode::@11
|
|
petscii_to_screencode::@5: scope:[petscii_to_screencode] from petscii_to_screencode::@10
|
|
petscii_to_screencode::petscii#10 = phi( petscii_to_screencode::@10/petscii_to_screencode::petscii#9 )
|
|
petscii_to_screencode::$7 = petscii_to_screencode::petscii#10 + $40
|
|
petscii_to_screencode::return#5 = petscii_to_screencode::$7
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@11: scope:[petscii_to_screencode] from petscii_to_screencode::@10
|
|
petscii_to_screencode::petscii#11 = phi( petscii_to_screencode::@10/petscii_to_screencode::petscii#9 )
|
|
petscii_to_screencode::$5 = petscii_to_screencode::petscii#11 < $ff
|
|
if(petscii_to_screencode::$5) goto petscii_to_screencode::@6
|
|
to:petscii_to_screencode::@12
|
|
petscii_to_screencode::@6: scope:[petscii_to_screencode] from petscii_to_screencode::@11
|
|
petscii_to_screencode::petscii#12 = phi( petscii_to_screencode::@11/petscii_to_screencode::petscii#11 )
|
|
petscii_to_screencode::$6 = petscii_to_screencode::petscii#12 - $80
|
|
petscii_to_screencode::return#6 = petscii_to_screencode::$6
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@12: scope:[petscii_to_screencode] from petscii_to_screencode::@11
|
|
petscii_to_screencode::return#7 = $5e
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@return: scope:[petscii_to_screencode] from petscii_to_screencode::@1 petscii_to_screencode::@12 petscii_to_screencode::@2 petscii_to_screencode::@3 petscii_to_screencode::@4 petscii_to_screencode::@5 petscii_to_screencode::@6
|
|
petscii_to_screencode::return#10 = phi( petscii_to_screencode::@1/petscii_to_screencode::return#1, petscii_to_screencode::@12/petscii_to_screencode::return#7, petscii_to_screencode::@2/petscii_to_screencode::return#2, petscii_to_screencode::@3/petscii_to_screencode::return#3, petscii_to_screencode::@4/petscii_to_screencode::return#4, petscii_to_screencode::@5/petscii_to_screencode::return#5, petscii_to_screencode::@6/petscii_to_screencode::return#6 )
|
|
petscii_to_screencode::return#8 = petscii_to_screencode::return#10
|
|
return
|
|
to:@return
|
|
|
|
char GETIN()
|
|
GETIN: scope:[GETIN] from main::@1
|
|
asm { jsr$ffe4 stach }
|
|
GETIN::return#1 = *GETIN::ch
|
|
to:GETIN::@return
|
|
GETIN::@return: scope:[GETIN] from GETIN
|
|
GETIN::return#4 = phi( GETIN/GETIN::return#1 )
|
|
GETIN::return#2 = GETIN::return#4
|
|
return
|
|
to:@return
|
|
|
|
void __start()
|
|
__start: scope:[__start] from
|
|
to:__start::__init1
|
|
__start::__init1: scope:[__start] from __start
|
|
conio_cursor_x = 0
|
|
conio_cursor_y = 0
|
|
conio_line_text = DEFAULT_SCREEN
|
|
conio_line_color = COLORRAM
|
|
conio_textcolor = LIGHT_BLUE
|
|
conio_scroll_enable = 1
|
|
call conio_c64_init
|
|
to:__start::@2
|
|
__start::@2: scope:[__start] from __start::__init1
|
|
to:__start::@1
|
|
__start::@1: scope:[__start] from __start::@2
|
|
call main
|
|
main::return#1 = main::return#0
|
|
to:__start::@3
|
|
__start::@3: scope:[__start] from __start::@1
|
|
to:__start::@return
|
|
__start::@return: scope:[__start] from __start::@3
|
|
return
|
|
to:@return
|
|
|
|
SYMBOL TABLE SSA
|
|
__constant char BINARY = 2
|
|
__constant char * const COLORRAM = (char *)$d800
|
|
__constant char DECIMAL = $a
|
|
__constant char * const DEFAULT_FONT_MIXED = (char *)$1800
|
|
__constant char * const DEFAULT_SCREEN = (char *)$400
|
|
__constant char DIGITS[] = "0123456789abcdef"z
|
|
char GETIN()
|
|
__constant char * const GETIN::ch = (char *)$ff
|
|
char GETIN::return
|
|
char GETIN::return#0
|
|
char GETIN::return#1
|
|
char GETIN::return#2
|
|
char GETIN::return#3
|
|
char GETIN::return#4
|
|
__constant char HEXADECIMAL = $10
|
|
__constant const char LIGHT_BLUE = $e
|
|
__constant char OCTAL = 8
|
|
__constant char OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
|
__constant char OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
|
|
__constant char OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN = 0
|
|
__constant char RADIX::BINARY = 2
|
|
__constant char RADIX::DECIMAL = $a
|
|
__constant char RADIX::HEXADECIMAL = $10
|
|
__constant char RADIX::OCTAL = 8
|
|
__constant char RADIX_BINARY_VALUES_CHAR[] = { $80, $40, $20, $10, 8, 4, 2 }
|
|
__constant char RADIX_DECIMAL_VALUES_CHAR[] = { $64, $a }
|
|
__constant char RADIX_HEXADECIMAL_VALUES_CHAR[] = { $10 }
|
|
__constant char RADIX_OCTAL_VALUES_CHAR[] = { $40, 8 }
|
|
__constant unsigned int STACK_BASE = $103
|
|
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *)$d000
|
|
void __start()
|
|
void clrscr()
|
|
bool clrscr::$0
|
|
bool clrscr::$1
|
|
char clrscr::c
|
|
char clrscr::c#0
|
|
char clrscr::c#1
|
|
char clrscr::c#2
|
|
char clrscr::c#3
|
|
char clrscr::l
|
|
char clrscr::l#0
|
|
char clrscr::l#1
|
|
char clrscr::l#2
|
|
char clrscr::l#3
|
|
char clrscr::l#4
|
|
char clrscr::l#5
|
|
char clrscr::l#6
|
|
char *clrscr::line_cols
|
|
char *clrscr::line_cols#0
|
|
char *clrscr::line_cols#1
|
|
char *clrscr::line_cols#2
|
|
char *clrscr::line_cols#3
|
|
char *clrscr::line_cols#4
|
|
char *clrscr::line_cols#5
|
|
char *clrscr::line_cols#6
|
|
char *clrscr::line_text
|
|
char *clrscr::line_text#0
|
|
char *clrscr::line_text#1
|
|
char *clrscr::line_text#2
|
|
char *clrscr::line_text#3
|
|
char *clrscr::line_text#4
|
|
char *clrscr::line_text#5
|
|
char *clrscr::line_text#6
|
|
void conio_c64_init()
|
|
bool conio_c64_init::$0
|
|
bool conio_c64_init::$1
|
|
__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *)$d6
|
|
char conio_c64_init::line
|
|
char conio_c64_init::line#0
|
|
char conio_c64_init::line#1
|
|
char conio_c64_init::line#2
|
|
__loadstore char conio_cursor_x
|
|
__loadstore char conio_cursor_y
|
|
__loadstore char *conio_line_color
|
|
__loadstore char *conio_line_text
|
|
__loadstore char conio_scroll_enable
|
|
__loadstore char conio_textcolor
|
|
__stackcall void cputc(char c)
|
|
bool cputc::$0
|
|
bool cputc::$1
|
|
bool cputc::$2
|
|
__constant char cputc::OFFSET_STACK_C = 0
|
|
char cputc::c
|
|
char cputc::c#0
|
|
char cputc::c#1
|
|
void cputln()
|
|
void cscroll()
|
|
bool cscroll::$0
|
|
bool cscroll::$1
|
|
bool cscroll::$7
|
|
void gotoxy(char x , char y)
|
|
bool gotoxy::$0
|
|
bool gotoxy::$1
|
|
bool gotoxy::$2
|
|
bool gotoxy::$3
|
|
char *gotoxy::$5
|
|
char *gotoxy::$6
|
|
unsigned int gotoxy::$7
|
|
unsigned int gotoxy::line_offset
|
|
unsigned int gotoxy::line_offset#0
|
|
char gotoxy::x
|
|
char gotoxy::x#0
|
|
char gotoxy::x#1
|
|
char gotoxy::x#2
|
|
char gotoxy::x#3
|
|
char gotoxy::x#4
|
|
char gotoxy::x#5
|
|
char gotoxy::x#6
|
|
char gotoxy::y
|
|
char gotoxy::y#0
|
|
char gotoxy::y#1
|
|
char gotoxy::y#2
|
|
char gotoxy::y#3
|
|
char gotoxy::y#4
|
|
char gotoxy::y#5
|
|
char gotoxy::y#6
|
|
int main()
|
|
char main::$0
|
|
bool main::$3
|
|
bool main::$4
|
|
bool main::$5
|
|
char main::$6
|
|
char main::ch
|
|
char main::ch#0
|
|
char main::ch#1
|
|
char main::ch#2
|
|
char main::ch#3
|
|
char main::ch#4
|
|
char main::ch#5
|
|
char main::ch#6
|
|
char main::current
|
|
char main::current#0
|
|
char main::current#1
|
|
char main::current#2
|
|
char main::current#3
|
|
int main::return
|
|
int main::return#0
|
|
int main::return#1
|
|
int main::return#2
|
|
__constant char main::s[2] = "'"
|
|
__constant char main::s1[4] = "'($"
|
|
__constant char main::s2[3] = ") "
|
|
number main::toD0181_$0
|
|
number main::toD0181_$1
|
|
char main::toD0181_$2
|
|
char main::toD0181_$3
|
|
number main::toD0181_$4
|
|
number main::toD0181_$5
|
|
number main::toD0181_$6
|
|
unsigned int main::toD0181_$7
|
|
char *main::toD0181_gfx
|
|
char *main::toD0181_gfx#0
|
|
char *main::toD0181_gfx#1
|
|
char main::toD0181_return
|
|
char main::toD0181_return#0
|
|
char main::toD0181_return#1
|
|
char main::toD0181_return#2
|
|
char main::toD0181_return#3
|
|
char *main::toD0181_screen
|
|
char *main::toD0181_screen#0
|
|
char *main::toD0181_screen#1
|
|
void * memcpy(void *destination , void *source , unsigned int num)
|
|
bool memcpy::$1
|
|
char *memcpy::$2
|
|
void *memcpy::destination
|
|
void *memcpy::destination#0
|
|
void *memcpy::destination#1
|
|
void *memcpy::destination#2
|
|
void *memcpy::destination#3
|
|
void *memcpy::destination#4
|
|
void *memcpy::destination#5
|
|
char *memcpy::dst
|
|
char *memcpy::dst#0
|
|
char *memcpy::dst#1
|
|
char *memcpy::dst#2
|
|
char *memcpy::dst#3
|
|
unsigned int memcpy::num
|
|
unsigned int memcpy::num#0
|
|
unsigned int memcpy::num#1
|
|
unsigned int memcpy::num#2
|
|
void *memcpy::return
|
|
void *memcpy::return#0
|
|
void *memcpy::return#1
|
|
void *memcpy::return#2
|
|
void *memcpy::return#3
|
|
void *memcpy::return#4
|
|
void *memcpy::source
|
|
void *memcpy::source#0
|
|
void *memcpy::source#1
|
|
void *memcpy::source#2
|
|
char *memcpy::src
|
|
char *memcpy::src#0
|
|
char *memcpy::src#1
|
|
char *memcpy::src#2
|
|
char *memcpy::src#3
|
|
char *memcpy::src_end
|
|
char *memcpy::src_end#0
|
|
char *memcpy::src_end#1
|
|
char *memcpy::src_end#2
|
|
void * memset(void *str , char c , unsigned int num)
|
|
bool memset::$0
|
|
bool memset::$1
|
|
bool memset::$3
|
|
char *memset::$4
|
|
char memset::c
|
|
char memset::c#0
|
|
char memset::c#1
|
|
char memset::c#2
|
|
char memset::c#3
|
|
char memset::c#4
|
|
char memset::c#5
|
|
char *memset::dst
|
|
char *memset::dst#0
|
|
char *memset::dst#1
|
|
char *memset::dst#2
|
|
char *memset::dst#3
|
|
char *memset::end
|
|
char *memset::end#0
|
|
char *memset::end#1
|
|
char *memset::end#2
|
|
unsigned int memset::num
|
|
unsigned int memset::num#0
|
|
unsigned int memset::num#1
|
|
unsigned int memset::num#2
|
|
unsigned int memset::num#3
|
|
void *memset::return
|
|
void *memset::return#0
|
|
void *memset::return#1
|
|
void *memset::return#2
|
|
void *memset::return#3
|
|
void *memset::return#4
|
|
void *memset::str
|
|
void *memset::str#0
|
|
void *memset::str#1
|
|
void *memset::str#2
|
|
void *memset::str#3
|
|
void *memset::str#4
|
|
void *memset::str#5
|
|
void *memset::str#6
|
|
char petscii_to_screencode(char petscii)
|
|
bool petscii_to_screencode::$0
|
|
bool petscii_to_screencode::$1
|
|
number petscii_to_screencode::$10
|
|
bool petscii_to_screencode::$2
|
|
bool petscii_to_screencode::$3
|
|
bool petscii_to_screencode::$4
|
|
bool petscii_to_screencode::$5
|
|
number petscii_to_screencode::$6
|
|
number petscii_to_screencode::$7
|
|
number petscii_to_screencode::$8
|
|
number petscii_to_screencode::$9
|
|
char petscii_to_screencode::petscii
|
|
char petscii_to_screencode::petscii#0
|
|
char petscii_to_screencode::petscii#1
|
|
char petscii_to_screencode::petscii#10
|
|
char petscii_to_screencode::petscii#11
|
|
char petscii_to_screencode::petscii#12
|
|
char petscii_to_screencode::petscii#2
|
|
char petscii_to_screencode::petscii#3
|
|
char petscii_to_screencode::petscii#4
|
|
char petscii_to_screencode::petscii#5
|
|
char petscii_to_screencode::petscii#6
|
|
char petscii_to_screencode::petscii#7
|
|
char petscii_to_screencode::petscii#8
|
|
char petscii_to_screencode::petscii#9
|
|
char petscii_to_screencode::return
|
|
char petscii_to_screencode::return#0
|
|
char petscii_to_screencode::return#1
|
|
char petscii_to_screencode::return#10
|
|
char petscii_to_screencode::return#2
|
|
char petscii_to_screencode::return#3
|
|
char petscii_to_screencode::return#4
|
|
char petscii_to_screencode::return#5
|
|
char petscii_to_screencode::return#6
|
|
char petscii_to_screencode::return#7
|
|
char petscii_to_screencode::return#8
|
|
char petscii_to_screencode::return#9
|
|
__loadstore struct printf_buffer_number printf_buffer = {}
|
|
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
bool printf_number_buffer::$0
|
|
bool printf_number_buffer::$1
|
|
bool printf_number_buffer::$10
|
|
bool printf_number_buffer::$12
|
|
bool printf_number_buffer::$14
|
|
bool printf_number_buffer::$15
|
|
bool printf_number_buffer::$16
|
|
bool printf_number_buffer::$17
|
|
unsigned int printf_number_buffer::$19
|
|
bool printf_number_buffer::$2
|
|
bool printf_number_buffer::$20
|
|
signed char printf_number_buffer::$21
|
|
bool printf_number_buffer::$22
|
|
bool printf_number_buffer::$23
|
|
signed char printf_number_buffer::$25
|
|
bool printf_number_buffer::$26
|
|
bool printf_number_buffer::$27
|
|
bool printf_number_buffer::$28
|
|
bool printf_number_buffer::$29
|
|
bool printf_number_buffer::$3
|
|
bool printf_number_buffer::$30
|
|
bool printf_number_buffer::$31
|
|
bool printf_number_buffer::$32
|
|
bool printf_number_buffer::$4
|
|
bool printf_number_buffer::$5
|
|
bool printf_number_buffer::$7
|
|
bool printf_number_buffer::$9
|
|
struct printf_buffer_number printf_number_buffer::buffer
|
|
char *printf_number_buffer::buffer_digits
|
|
char *printf_number_buffer::buffer_digits#0
|
|
char *printf_number_buffer::buffer_digits#1
|
|
char *printf_number_buffer::buffer_digits#10
|
|
char *printf_number_buffer::buffer_digits#11
|
|
char *printf_number_buffer::buffer_digits#12
|
|
char *printf_number_buffer::buffer_digits#13
|
|
char *printf_number_buffer::buffer_digits#14
|
|
char *printf_number_buffer::buffer_digits#15
|
|
char *printf_number_buffer::buffer_digits#16
|
|
char *printf_number_buffer::buffer_digits#17
|
|
char *printf_number_buffer::buffer_digits#18
|
|
char *printf_number_buffer::buffer_digits#2
|
|
char *printf_number_buffer::buffer_digits#3
|
|
char *printf_number_buffer::buffer_digits#4
|
|
char *printf_number_buffer::buffer_digits#5
|
|
char *printf_number_buffer::buffer_digits#6
|
|
char *printf_number_buffer::buffer_digits#7
|
|
char *printf_number_buffer::buffer_digits#8
|
|
char *printf_number_buffer::buffer_digits#9
|
|
char printf_number_buffer::buffer_sign
|
|
char printf_number_buffer::buffer_sign#0
|
|
char printf_number_buffer::buffer_sign#1
|
|
char printf_number_buffer::buffer_sign#10
|
|
char printf_number_buffer::buffer_sign#11
|
|
char printf_number_buffer::buffer_sign#2
|
|
char printf_number_buffer::buffer_sign#3
|
|
char printf_number_buffer::buffer_sign#4
|
|
char printf_number_buffer::buffer_sign#5
|
|
char printf_number_buffer::buffer_sign#6
|
|
char printf_number_buffer::buffer_sign#7
|
|
char printf_number_buffer::buffer_sign#8
|
|
char printf_number_buffer::buffer_sign#9
|
|
struct printf_format_number printf_number_buffer::format
|
|
char printf_number_buffer::format_justify_left
|
|
char printf_number_buffer::format_justify_left#0
|
|
char printf_number_buffer::format_justify_left#1
|
|
char printf_number_buffer::format_justify_left#10
|
|
char printf_number_buffer::format_justify_left#11
|
|
char printf_number_buffer::format_justify_left#12
|
|
char printf_number_buffer::format_justify_left#13
|
|
char printf_number_buffer::format_justify_left#14
|
|
char printf_number_buffer::format_justify_left#15
|
|
char printf_number_buffer::format_justify_left#16
|
|
char printf_number_buffer::format_justify_left#17
|
|
char printf_number_buffer::format_justify_left#18
|
|
char printf_number_buffer::format_justify_left#19
|
|
char printf_number_buffer::format_justify_left#2
|
|
char printf_number_buffer::format_justify_left#3
|
|
char printf_number_buffer::format_justify_left#4
|
|
char printf_number_buffer::format_justify_left#5
|
|
char printf_number_buffer::format_justify_left#6
|
|
char printf_number_buffer::format_justify_left#7
|
|
char printf_number_buffer::format_justify_left#8
|
|
char printf_number_buffer::format_justify_left#9
|
|
char printf_number_buffer::format_min_length
|
|
char printf_number_buffer::format_min_length#0
|
|
char printf_number_buffer::format_min_length#1
|
|
char printf_number_buffer::format_min_length#2
|
|
char printf_number_buffer::format_min_length#3
|
|
char printf_number_buffer::format_min_length#4
|
|
char printf_number_buffer::format_min_length#5
|
|
char printf_number_buffer::format_radix
|
|
char printf_number_buffer::format_radix#0
|
|
char printf_number_buffer::format_sign_always
|
|
char printf_number_buffer::format_sign_always#0
|
|
char printf_number_buffer::format_upper_case
|
|
char printf_number_buffer::format_upper_case#0
|
|
char printf_number_buffer::format_upper_case#1
|
|
char printf_number_buffer::format_upper_case#10
|
|
char printf_number_buffer::format_upper_case#11
|
|
char printf_number_buffer::format_upper_case#12
|
|
char printf_number_buffer::format_upper_case#13
|
|
char printf_number_buffer::format_upper_case#14
|
|
char printf_number_buffer::format_upper_case#15
|
|
char printf_number_buffer::format_upper_case#2
|
|
char printf_number_buffer::format_upper_case#3
|
|
char printf_number_buffer::format_upper_case#4
|
|
char printf_number_buffer::format_upper_case#5
|
|
char printf_number_buffer::format_upper_case#6
|
|
char printf_number_buffer::format_upper_case#7
|
|
char printf_number_buffer::format_upper_case#8
|
|
char printf_number_buffer::format_upper_case#9
|
|
char printf_number_buffer::format_zero_padding
|
|
char printf_number_buffer::format_zero_padding#0
|
|
char printf_number_buffer::format_zero_padding#1
|
|
char printf_number_buffer::format_zero_padding#10
|
|
char printf_number_buffer::format_zero_padding#11
|
|
char printf_number_buffer::format_zero_padding#12
|
|
char printf_number_buffer::format_zero_padding#13
|
|
char printf_number_buffer::format_zero_padding#14
|
|
char printf_number_buffer::format_zero_padding#15
|
|
char printf_number_buffer::format_zero_padding#16
|
|
char printf_number_buffer::format_zero_padding#17
|
|
char printf_number_buffer::format_zero_padding#18
|
|
char printf_number_buffer::format_zero_padding#19
|
|
char printf_number_buffer::format_zero_padding#2
|
|
char printf_number_buffer::format_zero_padding#3
|
|
char printf_number_buffer::format_zero_padding#4
|
|
char printf_number_buffer::format_zero_padding#5
|
|
char printf_number_buffer::format_zero_padding#6
|
|
char printf_number_buffer::format_zero_padding#7
|
|
char printf_number_buffer::format_zero_padding#8
|
|
char printf_number_buffer::format_zero_padding#9
|
|
signed char printf_number_buffer::len
|
|
signed char printf_number_buffer::len#0
|
|
signed char printf_number_buffer::len#1
|
|
signed char printf_number_buffer::len#2
|
|
signed char printf_number_buffer::len#3
|
|
signed char printf_number_buffer::padding
|
|
signed char printf_number_buffer::padding#0
|
|
signed char printf_number_buffer::padding#1
|
|
signed char printf_number_buffer::padding#10
|
|
signed char printf_number_buffer::padding#11
|
|
signed char printf_number_buffer::padding#12
|
|
signed char printf_number_buffer::padding#13
|
|
signed char printf_number_buffer::padding#14
|
|
signed char printf_number_buffer::padding#15
|
|
signed char printf_number_buffer::padding#16
|
|
signed char printf_number_buffer::padding#2
|
|
signed char printf_number_buffer::padding#3
|
|
signed char printf_number_buffer::padding#4
|
|
signed char printf_number_buffer::padding#5
|
|
signed char printf_number_buffer::padding#6
|
|
signed char printf_number_buffer::padding#7
|
|
signed char printf_number_buffer::padding#8
|
|
signed char printf_number_buffer::padding#9
|
|
void (*printf_number_buffer::putc)(char)
|
|
void (*printf_number_buffer::putc#0)(char)
|
|
void (*printf_number_buffer::putc#1)(char)
|
|
void (*printf_number_buffer::putc#10)(char)
|
|
void (*printf_number_buffer::putc#11)(char)
|
|
void (*printf_number_buffer::putc#12)(char)
|
|
void (*printf_number_buffer::putc#13)(char)
|
|
void (*printf_number_buffer::putc#14)(char)
|
|
void (*printf_number_buffer::putc#15)(char)
|
|
void (*printf_number_buffer::putc#16)(char)
|
|
void (*printf_number_buffer::putc#17)(char)
|
|
void (*printf_number_buffer::putc#18)(char)
|
|
void (*printf_number_buffer::putc#19)(char)
|
|
void (*printf_number_buffer::putc#2)(char)
|
|
void (*printf_number_buffer::putc#20)(char)
|
|
void (*printf_number_buffer::putc#3)(char)
|
|
void (*printf_number_buffer::putc#4)(char)
|
|
void (*printf_number_buffer::putc#5)(char)
|
|
void (*printf_number_buffer::putc#6)(char)
|
|
void (*printf_number_buffer::putc#7)(char)
|
|
void (*printf_number_buffer::putc#8)(char)
|
|
void (*printf_number_buffer::putc#9)(char)
|
|
void printf_padding(void (*putc)(char) , char pad , char length)
|
|
bool printf_padding::$0
|
|
char printf_padding::i
|
|
char printf_padding::i#0
|
|
char printf_padding::i#1
|
|
char printf_padding::i#2
|
|
char printf_padding::i#3
|
|
char printf_padding::i#4
|
|
char printf_padding::length
|
|
char printf_padding::length#0
|
|
char printf_padding::length#1
|
|
char printf_padding::length#2
|
|
char printf_padding::length#3
|
|
char printf_padding::length#4
|
|
char printf_padding::length#5
|
|
char printf_padding::length#6
|
|
char printf_padding::pad
|
|
char printf_padding::pad#0
|
|
char printf_padding::pad#1
|
|
char printf_padding::pad#2
|
|
char printf_padding::pad#3
|
|
char printf_padding::pad#4
|
|
char printf_padding::pad#5
|
|
char printf_padding::pad#6
|
|
void (*printf_padding::putc)(char)
|
|
void (*printf_padding::putc#0)(char)
|
|
void (*printf_padding::putc#1)(char)
|
|
void (*printf_padding::putc#2)(char)
|
|
void (*printf_padding::putc#3)(char)
|
|
void (*printf_padding::putc#4)(char)
|
|
void (*printf_padding::putc#5)(char)
|
|
void (*printf_padding::putc#6)(char)
|
|
void printf_str(void (*putc)(char) , const char *s)
|
|
char printf_str::$0
|
|
bool printf_str::$2
|
|
char printf_str::c
|
|
char printf_str::c#0
|
|
char printf_str::c#1
|
|
char printf_str::c#2
|
|
void (*printf_str::putc)(char)
|
|
void (*printf_str::putc#0)(char)
|
|
void (*printf_str::putc#1)(char)
|
|
void (*printf_str::putc#2)(char)
|
|
void (*printf_str::putc#3)(char)
|
|
void (*printf_str::putc#4)(char)
|
|
void (*printf_str::putc#5)(char)
|
|
void (*printf_str::putc#6)(char)
|
|
const char *printf_str::s
|
|
const char *printf_str::s#0
|
|
const char *printf_str::s#1
|
|
const char *printf_str::s#2
|
|
const char *printf_str::s#3
|
|
const char *printf_str::s#4
|
|
const char *printf_str::s#5
|
|
const char *printf_str::s#6
|
|
const char *printf_str::s#7
|
|
void printf_uchar(void (*putc)(char) , char uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
number printf_uchar::$0
|
|
char printf_uchar::$1
|
|
number printf_uchar::$2
|
|
bool printf_uchar::$5
|
|
struct printf_format_number printf_uchar::format
|
|
char printf_uchar::format_justify_left
|
|
char printf_uchar::format_justify_left#0
|
|
char printf_uchar::format_justify_left#1
|
|
char printf_uchar::format_justify_left#2
|
|
char printf_uchar::format_justify_left#3
|
|
char printf_uchar::format_justify_left#4
|
|
char printf_uchar::format_justify_left#5
|
|
char printf_uchar::format_min_length
|
|
char printf_uchar::format_min_length#0
|
|
char printf_uchar::format_min_length#1
|
|
char printf_uchar::format_min_length#2
|
|
char printf_uchar::format_min_length#3
|
|
char printf_uchar::format_min_length#4
|
|
char printf_uchar::format_min_length#5
|
|
char printf_uchar::format_radix
|
|
char printf_uchar::format_radix#0
|
|
char printf_uchar::format_radix#1
|
|
char printf_uchar::format_radix#2
|
|
char printf_uchar::format_radix#3
|
|
char printf_uchar::format_radix#4
|
|
char printf_uchar::format_radix#5
|
|
char printf_uchar::format_sign_always
|
|
char printf_uchar::format_sign_always#0
|
|
char printf_uchar::format_sign_always#1
|
|
char printf_uchar::format_sign_always#2
|
|
char printf_uchar::format_sign_always#3
|
|
char printf_uchar::format_sign_always#4
|
|
char printf_uchar::format_sign_always#5
|
|
char printf_uchar::format_upper_case
|
|
char printf_uchar::format_upper_case#0
|
|
char printf_uchar::format_upper_case#1
|
|
char printf_uchar::format_upper_case#2
|
|
char printf_uchar::format_upper_case#3
|
|
char printf_uchar::format_upper_case#4
|
|
char printf_uchar::format_upper_case#5
|
|
char printf_uchar::format_zero_padding
|
|
char printf_uchar::format_zero_padding#0
|
|
char printf_uchar::format_zero_padding#1
|
|
char printf_uchar::format_zero_padding#2
|
|
char printf_uchar::format_zero_padding#3
|
|
char printf_uchar::format_zero_padding#4
|
|
char printf_uchar::format_zero_padding#5
|
|
void (*printf_uchar::putc)(char)
|
|
void (*printf_uchar::putc#0)(char)
|
|
void (*printf_uchar::putc#1)(char)
|
|
void (*printf_uchar::putc#2)(char)
|
|
void (*printf_uchar::putc#3)(char)
|
|
void (*printf_uchar::putc#4)(char)
|
|
void (*printf_uchar::putc#5)(char)
|
|
char printf_uchar::uvalue
|
|
char printf_uchar::uvalue#0
|
|
char printf_uchar::uvalue#1
|
|
char printf_uchar::uvalue#2
|
|
char printf_uchar::uvalue#3
|
|
char printf_uchar::uvalue#4
|
|
unsigned int strlen(char *str)
|
|
bool strlen::$0
|
|
unsigned int strlen::len
|
|
unsigned int strlen::len#0
|
|
unsigned int strlen::len#1
|
|
unsigned int strlen::len#2
|
|
unsigned int strlen::len#3
|
|
unsigned int strlen::len#4
|
|
unsigned int strlen::return
|
|
unsigned int strlen::return#0
|
|
unsigned int strlen::return#1
|
|
unsigned int strlen::return#2
|
|
unsigned int strlen::return#3
|
|
unsigned int strlen::return#4
|
|
char *strlen::str
|
|
char *strlen::str#0
|
|
char *strlen::str#1
|
|
char *strlen::str#2
|
|
char *strlen::str#3
|
|
char *strlen::str#4
|
|
char * strupr(char *str)
|
|
char strupr::$0
|
|
bool strupr::$1
|
|
char *strupr::return
|
|
char *strupr::return#0
|
|
char *strupr::return#1
|
|
char *strupr::return#2
|
|
char *strupr::return#3
|
|
char *strupr::src
|
|
char *strupr::src#0
|
|
char *strupr::src#1
|
|
char *strupr::src#2
|
|
char *strupr::src#3
|
|
char *strupr::src#4
|
|
char *strupr::str
|
|
char *strupr::str#0
|
|
char *strupr::str#1
|
|
char *strupr::str#2
|
|
char *strupr::str#3
|
|
char *strupr::str#4
|
|
char *strupr::str#5
|
|
char toupper(char ch)
|
|
bool toupper::$0
|
|
bool toupper::$1
|
|
bool toupper::$2
|
|
char toupper::$3
|
|
char toupper::ch
|
|
char toupper::ch#0
|
|
char toupper::ch#1
|
|
char toupper::ch#2
|
|
char toupper::ch#3
|
|
char toupper::return
|
|
char toupper::return#0
|
|
char toupper::return#1
|
|
char toupper::return#2
|
|
char toupper::return#3
|
|
char toupper::return#4
|
|
char toupper::return#5
|
|
void uctoa(char value , char *buffer , char radix)
|
|
bool uctoa::$0
|
|
bool uctoa::$1
|
|
char uctoa::$10
|
|
bool uctoa::$2
|
|
bool uctoa::$3
|
|
number uctoa::$4
|
|
bool uctoa::$5
|
|
bool uctoa::$6
|
|
bool uctoa::$7
|
|
bool uctoa::$8
|
|
char uctoa::$9
|
|
char *uctoa::buffer
|
|
char *uctoa::buffer#0
|
|
char *uctoa::buffer#1
|
|
char *uctoa::buffer#10
|
|
char *uctoa::buffer#11
|
|
char *uctoa::buffer#12
|
|
char *uctoa::buffer#13
|
|
char *uctoa::buffer#14
|
|
char *uctoa::buffer#15
|
|
char *uctoa::buffer#16
|
|
char *uctoa::buffer#17
|
|
char *uctoa::buffer#18
|
|
char *uctoa::buffer#19
|
|
char *uctoa::buffer#2
|
|
char *uctoa::buffer#20
|
|
char *uctoa::buffer#21
|
|
char *uctoa::buffer#3
|
|
char *uctoa::buffer#4
|
|
char *uctoa::buffer#5
|
|
char *uctoa::buffer#6
|
|
char *uctoa::buffer#7
|
|
char *uctoa::buffer#8
|
|
char *uctoa::buffer#9
|
|
char uctoa::digit
|
|
char uctoa::digit#0
|
|
char uctoa::digit#1
|
|
char uctoa::digit#2
|
|
char uctoa::digit#3
|
|
char uctoa::digit#4
|
|
char uctoa::digit#5
|
|
char uctoa::digit#6
|
|
char uctoa::digit_value
|
|
char uctoa::digit_value#0
|
|
char uctoa::digit_value#1
|
|
char *uctoa::digit_values
|
|
char *uctoa::digit_values#0
|
|
char *uctoa::digit_values#1
|
|
char *uctoa::digit_values#10
|
|
char *uctoa::digit_values#2
|
|
char *uctoa::digit_values#3
|
|
char *uctoa::digit_values#4
|
|
char *uctoa::digit_values#5
|
|
char *uctoa::digit_values#6
|
|
char *uctoa::digit_values#7
|
|
char *uctoa::digit_values#8
|
|
char *uctoa::digit_values#9
|
|
char uctoa::max_digits
|
|
char uctoa::max_digits#0
|
|
char uctoa::max_digits#1
|
|
char uctoa::max_digits#10
|
|
char uctoa::max_digits#2
|
|
char uctoa::max_digits#3
|
|
char uctoa::max_digits#4
|
|
char uctoa::max_digits#5
|
|
char uctoa::max_digits#6
|
|
char uctoa::max_digits#7
|
|
char uctoa::max_digits#8
|
|
char uctoa::max_digits#9
|
|
char uctoa::radix
|
|
char uctoa::radix#0
|
|
char uctoa::radix#1
|
|
char uctoa::radix#2
|
|
char uctoa::radix#3
|
|
char uctoa::radix#4
|
|
char uctoa::started
|
|
char uctoa::started#0
|
|
char uctoa::started#1
|
|
char uctoa::started#2
|
|
char uctoa::started#3
|
|
char uctoa::started#4
|
|
char uctoa::value
|
|
char uctoa::value#0
|
|
char uctoa::value#1
|
|
char uctoa::value#10
|
|
char uctoa::value#11
|
|
char uctoa::value#12
|
|
char uctoa::value#13
|
|
char uctoa::value#14
|
|
char uctoa::value#15
|
|
char uctoa::value#2
|
|
char uctoa::value#3
|
|
char uctoa::value#4
|
|
char uctoa::value#5
|
|
char uctoa::value#6
|
|
char uctoa::value#7
|
|
char uctoa::value#8
|
|
char uctoa::value#9
|
|
char uctoa_append(char *buffer , char value , char sub)
|
|
bool uctoa_append::$0
|
|
char *uctoa_append::buffer
|
|
char *uctoa_append::buffer#0
|
|
char *uctoa_append::buffer#1
|
|
char *uctoa_append::buffer#2
|
|
char *uctoa_append::buffer#3
|
|
char *uctoa_append::buffer#4
|
|
char uctoa_append::digit
|
|
char uctoa_append::digit#0
|
|
char uctoa_append::digit#1
|
|
char uctoa_append::digit#2
|
|
char uctoa_append::digit#3
|
|
char uctoa_append::digit#4
|
|
char uctoa_append::return
|
|
char uctoa_append::return#0
|
|
char uctoa_append::return#1
|
|
char uctoa_append::return#2
|
|
char uctoa_append::return#3
|
|
char uctoa_append::return#4
|
|
char uctoa_append::sub
|
|
char uctoa_append::sub#0
|
|
char uctoa_append::sub#1
|
|
char uctoa_append::sub#2
|
|
char uctoa_append::sub#3
|
|
char uctoa_append::value
|
|
char uctoa_append::value#0
|
|
char uctoa_append::value#1
|
|
char uctoa_append::value#2
|
|
char uctoa_append::value#3
|
|
char uctoa_append::value#4
|
|
char uctoa_append::value#5
|
|
|
|
Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#2 > 0
|
|
Adding number conversion cast (unumber) 0 in strlen::$0 = 0 != *strlen::str#2
|
|
Adding number conversion cast (unumber) 0 in strupr::$1 = 0 != *strupr::src#2
|
|
Adding number conversion cast (unumber) 3 in uctoa::max_digits#1 = 3
|
|
Adding number conversion cast (unumber) 2 in uctoa::max_digits#2 = 2
|
|
Adding number conversion cast (unumber) 3 in uctoa::max_digits#3 = 3
|
|
Adding number conversion cast (unumber) 8 in uctoa::max_digits#4 = 8
|
|
Adding number conversion cast (unumber) 0 in *uctoa::buffer#2 = 0
|
|
Adding number conversion cast (unumber) 1 in uctoa::$4 = uctoa::max_digits#5 - 1
|
|
Adding number conversion cast (unumber) uctoa::$4 in uctoa::$4 = uctoa::max_digits#5 - (unumber)1
|
|
Adding number conversion cast (unumber) 0 in *uctoa::buffer#3 = 0
|
|
Adding number conversion cast (unumber) 1 in uctoa::started#1 = 1
|
|
Adding number conversion cast (unumber) $19 in clrscr::$0 = clrscr::l#2 < $19
|
|
Adding number conversion cast (unumber) 0 in conio_cursor_x = 0
|
|
Adding number conversion cast (unumber) 0 in conio_cursor_y = 0
|
|
Adding number conversion cast (unumber) $28 in clrscr::$1 = clrscr::c#2 < $28
|
|
Adding number conversion cast (unumber) $28 in clrscr::line_text#1 = clrscr::line_text#3 + $28
|
|
Adding number conversion cast (unumber) $28 in clrscr::line_cols#1 = clrscr::line_cols#3 + $28
|
|
Adding number conversion cast (unumber) $19 in gotoxy::$0 = gotoxy::y#3 > $19
|
|
Adding number conversion cast (unumber) $28 in gotoxy::$2 = gotoxy::x#3 >= $28
|
|
Adding number conversion cast (unumber) 0 in gotoxy::y#0 = 0
|
|
Adding number conversion cast (unumber) $28 in gotoxy::line_offset#0 = gotoxy::$7 * $28
|
|
Adding number conversion cast (unumber) 0 in gotoxy::x#0 = 0
|
|
Adding number conversion cast (unumber) $28 in cputc::$1 = conio_cursor_x == $28
|
|
Adding number conversion cast (unumber) $28 in conio_line_text = conio_line_text + $28
|
|
Adding number conversion cast (unumber) $28 in conio_line_color = conio_line_color + $28
|
|
Adding number conversion cast (unumber) 0 in conio_cursor_x = 0
|
|
Adding number conversion cast (unumber) $19 in cscroll::$0 = conio_cursor_y == $19
|
|
Adding number conversion cast (unumber) 0 in cscroll::$7 = 0 != conio_scroll_enable
|
|
Adding number conversion cast (unumber) $28 in memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
|
|
Adding number conversion cast (unumber) $19*$28-$28 in memcpy::num#0 = $19*$28-$28
|
|
Adding number conversion cast (unumber) $28 in memcpy::source#1 = (void *)COLORRAM+$28
|
|
Adding number conversion cast (unumber) $19*$28-$28 in memcpy::num#1 = $19*$28-$28
|
|
Adding number conversion cast (unumber) $28 in memset::str#0 = (void *)DEFAULT_SCREEN+$19*$28-$28
|
|
Adding number conversion cast (unumber) $19*$28 in memset::str#0 = (void *)DEFAULT_SCREEN+$19*$28-(unumber)$28
|
|
Adding number conversion cast (unumber) $28 in memset::num#0 = $28
|
|
Adding number conversion cast (unumber) $28 in memset::str#1 = (void *)COLORRAM+$19*$28-$28
|
|
Adding number conversion cast (unumber) $19*$28 in memset::str#1 = (void *)COLORRAM+$19*$28-(unumber)$28
|
|
Adding number conversion cast (unumber) $28 in memset::num#1 = $28
|
|
Adding number conversion cast (unumber) $28 in conio_line_text = conio_line_text - $28
|
|
Adding number conversion cast (unumber) $28 in conio_line_color = conio_line_color - $28
|
|
Adding number conversion cast (unumber) 0 in gotoxy::x#1 = 0
|
|
Adding number conversion cast (unumber) 0 in gotoxy::y#1 = 0
|
|
Adding number conversion cast (unumber) $19 in conio_c64_init::$0 = conio_c64_init::line#0 >= $19
|
|
Adding number conversion cast (unumber) 0 in gotoxy::x#2 = 0
|
|
Adding number conversion cast (unumber) $19-1 in conio_c64_init::line#1 = $19-1
|
|
Adding number conversion cast (unumber) 0 in printf_str::$2 = 0 != printf_str::$0
|
|
Adding number conversion cast (unumber) 0 in printf_uchar::$5 = 0 != printf_uchar::format_sign_always#1
|
|
Adding number conversion cast (unumber) printf_uchar::$2 in printf_uchar::format_upper_case#2 = phi( printf_uchar::@1/printf_uchar::format_upper_case#3, printf_uchar::@2/printf_uchar::format_upper_case#4 )
|
|
printf_uchar::format_zero_padding#2 = phi( printf_uchar::@1/printf_uchar::format_zero_padding#3, printf_uchar::@2/printf_uchar::format_zero_padding#4 )
|
|
printf_uchar::format_sign_always#3 = phi( printf_uchar::@1/printf_uchar::format_sign_always#4, printf_uchar::@2/printf_uchar::format_sign_always#5 )
|
|
printf_uchar::format_justify_left#2 = phi( printf_uchar::@1/printf_uchar::format_justify_left#3, printf_uchar::@2/printf_uchar::format_justify_left#4 )
|
|
printf_uchar::format_min_length#2 = phi( printf_uchar::@1/printf_uchar::format_min_length#3, printf_uchar::@2/printf_uchar::format_min_length#4 )
|
|
printf_uchar::putc#2 = phi( printf_uchar::@1/printf_uchar::putc#3, printf_uchar::@2/printf_uchar::putc#4 )
|
|
printf_uchar::format_radix#1 = phi( printf_uchar::@1/printf_uchar::format_radix#3, printf_uchar::@2/printf_uchar::format_radix#4 )
|
|
printf_uchar::uvalue#1 = phi( printf_uchar::@1/printf_uchar::uvalue#2, printf_uchar::@2/printf_uchar::uvalue#3 )
|
|
printf_uchar::$2 = phi( printf_uchar::@1/printf_uchar::$1, printf_uchar::@2/printf_uchar::$0 )
|
|
Adding number conversion cast (unumber) printf_uchar::$0 in printf_uchar::format_upper_case#2 = phi( printf_uchar::@1/printf_uchar::format_upper_case#3, printf_uchar::@2/printf_uchar::format_upper_case#4 )
|
|
printf_uchar::format_zero_padding#2 = phi( printf_uchar::@1/printf_uchar::format_zero_padding#3, printf_uchar::@2/printf_uchar::format_zero_padding#4 )
|
|
printf_uchar::format_sign_always#3 = phi( printf_uchar::@1/printf_uchar::format_sign_always#4, printf_uchar::@2/printf_uchar::format_sign_always#5 )
|
|
printf_uchar::format_justify_left#2 = phi( printf_uchar::@1/printf_uchar::format_justify_left#3, printf_uchar::@2/printf_uchar::format_justify_left#4 )
|
|
printf_uchar::format_min_length#2 = phi( printf_uchar::@1/printf_uchar::format_min_length#3, printf_uchar::@2/printf_uchar::format_min_length#4 )
|
|
printf_uchar::putc#2 = phi( printf_uchar::@1/printf_uchar::putc#3, printf_uchar::@2/printf_uchar::putc#4 )
|
|
printf_uchar::format_radix#1 = phi( printf_uchar::@1/printf_uchar::format_radix#3, printf_uchar::@2/printf_uchar::format_radix#4 )
|
|
printf_uchar::uvalue#1 = phi( printf_uchar::@1/printf_uchar::uvalue#2, printf_uchar::@2/printf_uchar::uvalue#3 )
|
|
printf_uchar::$2 = phi( printf_uchar::@1/printf_uchar::$1, printf_uchar::@2/printf_uchar::$0 )
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$26 = 0 != printf_number_buffer::format_min_length#1
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$27 = 0 != printf_number_buffer::format_justify_left#1
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$28 = 0 != printf_number_buffer::format_zero_padding#1
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$29 = 0 != printf_number_buffer::buffer_sign#1
|
|
Adding number conversion cast (snumber) 0 in printf_number_buffer::$22 = printf_number_buffer::padding#1 < 0
|
|
Adding number conversion cast (snumber) 0 in printf_number_buffer::padding#2 = 0
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$30 = 0 != printf_number_buffer::buffer_sign#2
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$31 = 0 != printf_number_buffer::format_upper_case#1
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$32 = 0 != printf_number_buffer::format_zero_padding#3
|
|
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
|
|
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
|
|
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
|
|
Adding number conversion cast (unumber) main::toD0181_$1 in main::toD0181_$1 = main::toD0181_$0 * (unumber)4
|
|
Adding number conversion cast (unumber) 4 in main::toD0181_$4 = main::toD0181_$3 / 4
|
|
Adding number conversion cast (unumber) main::toD0181_$4 in main::toD0181_$4 = main::toD0181_$3 / (unumber)4
|
|
Adding number conversion cast (unumber) $f in main::toD0181_$5 = main::toD0181_$4 & $f
|
|
Adding number conversion cast (unumber) main::toD0181_$5 in main::toD0181_$5 = main::toD0181_$4 & (unumber)$f
|
|
Adding number conversion cast (unumber) main::toD0181_$6 in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
|
|
Adding number conversion cast (unumber) $20 in petscii_to_screencode::$0 = petscii_to_screencode::petscii#1 < $20
|
|
Adding number conversion cast (unumber) $80 in petscii_to_screencode::$10 = petscii_to_screencode::petscii#2 + $80
|
|
Adding number conversion cast (unumber) petscii_to_screencode::$10 in petscii_to_screencode::$10 = petscii_to_screencode::petscii#2 + (unumber)$80
|
|
Adding number conversion cast (unumber) $40 in petscii_to_screencode::$1 = petscii_to_screencode::petscii#3 < $40
|
|
Adding number conversion cast (unumber) $60 in petscii_to_screencode::$2 = petscii_to_screencode::petscii#5 < $60
|
|
Adding number conversion cast (unumber) $40 in petscii_to_screencode::$9 = petscii_to_screencode::petscii#6 - $40
|
|
Adding number conversion cast (unumber) petscii_to_screencode::$9 in petscii_to_screencode::$9 = petscii_to_screencode::petscii#6 - (unumber)$40
|
|
Adding number conversion cast (unumber) $80 in petscii_to_screencode::$3 = petscii_to_screencode::petscii#7 < $80
|
|
Adding number conversion cast (unumber) $20 in petscii_to_screencode::$8 = petscii_to_screencode::petscii#8 - $20
|
|
Adding number conversion cast (unumber) petscii_to_screencode::$8 in petscii_to_screencode::$8 = petscii_to_screencode::petscii#8 - (unumber)$20
|
|
Adding number conversion cast (unumber) $a0 in petscii_to_screencode::$4 = petscii_to_screencode::petscii#9 < $a0
|
|
Adding number conversion cast (unumber) $40 in petscii_to_screencode::$7 = petscii_to_screencode::petscii#10 + $40
|
|
Adding number conversion cast (unumber) petscii_to_screencode::$7 in petscii_to_screencode::$7 = petscii_to_screencode::petscii#10 + (unumber)$40
|
|
Adding number conversion cast (unumber) $ff in petscii_to_screencode::$5 = petscii_to_screencode::petscii#11 < $ff
|
|
Adding number conversion cast (unumber) $80 in petscii_to_screencode::$6 = petscii_to_screencode::petscii#12 - $80
|
|
Adding number conversion cast (unumber) petscii_to_screencode::$6 in petscii_to_screencode::$6 = petscii_to_screencode::petscii#12 - (unumber)$80
|
|
Adding number conversion cast (unumber) $5e in petscii_to_screencode::return#7 = $5e
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Adding number conversion cast (unumber) 0 in printf_uchar::$0 = 0
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast memcpy::src#0 = (char *)memcpy::source#2
|
|
Inlining cast memcpy::dst#0 = (char *)memcpy::destination#2
|
|
Inlining cast memset::dst#0 = (char *)memset::str#3
|
|
Inlining cast uctoa::max_digits#1 = (unumber)3
|
|
Inlining cast uctoa::max_digits#2 = (unumber)2
|
|
Inlining cast uctoa::max_digits#3 = (unumber)3
|
|
Inlining cast uctoa::max_digits#4 = (unumber)8
|
|
Inlining cast *uctoa::buffer#2 = (unumber)0
|
|
Inlining cast *uctoa::buffer#3 = (unumber)0
|
|
Inlining cast uctoa::started#1 = (unumber)1
|
|
Inlining cast conio_cursor_x = (unumber)0
|
|
Inlining cast conio_cursor_y = (unumber)0
|
|
Inlining cast gotoxy::y#0 = (unumber)0
|
|
Inlining cast gotoxy::x#0 = (unumber)0
|
|
Inlining cast conio_cursor_x = (unumber)0
|
|
Inlining cast memcpy::num#0 = (unumber)$19*$28-$28
|
|
Inlining cast memcpy::num#1 = (unumber)$19*$28-$28
|
|
Inlining cast memset::num#0 = (unumber)$28
|
|
Inlining cast memset::num#1 = (unumber)$28
|
|
Inlining cast gotoxy::x#1 = (unumber)0
|
|
Inlining cast gotoxy::y#1 = (unumber)0
|
|
Inlining cast gotoxy::x#2 = (unumber)0
|
|
Inlining cast conio_c64_init::line#1 = (unumber)$19-1
|
|
Inlining cast printf_uchar::$0 = (unumber)0
|
|
Inlining cast printf_number_buffer::padding#2 = (snumber)0
|
|
Inlining cast petscii_to_screencode::return#7 = (unumber)$5e
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant pointer cast (struct MOS6569_VICII *) 53248
|
|
Simplifying constant pointer cast (char *) 55296
|
|
Simplifying constant pointer cast (char *) 1024
|
|
Simplifying constant pointer cast (char *) 6144
|
|
Simplifying constant pointer cast (char *) 214
|
|
Simplifying constant pointer cast (char *) 255
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast uctoa::value#3
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $19
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $19
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $19
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $19
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $3fff
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast $f
|
|
Simplifying constant integer cast $20
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast $40
|
|
Simplifying constant integer cast $60
|
|
Simplifying constant integer cast $40
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast $20
|
|
Simplifying constant integer cast $a0
|
|
Simplifying constant integer cast $40
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast $5e
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 3
|
|
Finalized unsigned number type (char) 2
|
|
Finalized unsigned number type (char) 3
|
|
Finalized unsigned number type (char) 8
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) $19
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $19
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) $19
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) $19
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized signed number type (signed char) 0
|
|
Finalized signed number type (signed char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (unsigned int) $3fff
|
|
Finalized unsigned number type (char) 4
|
|
Finalized unsigned number type (char) 4
|
|
Finalized unsigned number type (char) $f
|
|
Finalized unsigned number type (char) $20
|
|
Finalized unsigned number type (char) $80
|
|
Finalized unsigned number type (char) $40
|
|
Finalized unsigned number type (char) $60
|
|
Finalized unsigned number type (char) $40
|
|
Finalized unsigned number type (char) $80
|
|
Finalized unsigned number type (char) $20
|
|
Finalized unsigned number type (char) $a0
|
|
Finalized unsigned number type (char) $40
|
|
Finalized unsigned number type (char) $ff
|
|
Finalized unsigned number type (char) $80
|
|
Finalized unsigned number type (char) $5e
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Inferred type updated to char in uctoa::$4 = uctoa::max_digits#5 - 1
|
|
Inferred type updated to char in printf_uchar::$0 = 0
|
|
Inferred type updated to char for printf_uchar::$2
|
|
Inferred type updated to unsigned int in main::toD0181_$0 = main::toD0181_$7 & $3fff
|
|
Inferred type updated to unsigned int in main::toD0181_$1 = main::toD0181_$0 * 4
|
|
Inferred type updated to char in main::toD0181_$4 = main::toD0181_$3 / 4
|
|
Inferred type updated to char in main::toD0181_$5 = main::toD0181_$4 & $f
|
|
Inferred type updated to char in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
|
|
Inferred type updated to char in petscii_to_screencode::$10 = petscii_to_screencode::petscii#2 + $80
|
|
Inferred type updated to char in petscii_to_screencode::$9 = petscii_to_screencode::petscii#6 - $40
|
|
Inferred type updated to char in petscii_to_screencode::$8 = petscii_to_screencode::petscii#8 - $20
|
|
Inferred type updated to char in petscii_to_screencode::$7 = petscii_to_screencode::petscii#10 + $40
|
|
Inferred type updated to char in petscii_to_screencode::$6 = petscii_to_screencode::petscii#12 - $80
|
|
Inversing boolean not [19] memset::$1 = memset::num#2 <= 0 from [18] memset::$0 = memset::num#2 > 0
|
|
Inversing boolean not [186] gotoxy::$1 = gotoxy::y#3 <= $19 from [185] gotoxy::$0 = gotoxy::y#3 > $19
|
|
Inversing boolean not [190] gotoxy::$3 = gotoxy::x#3 < $28 from [189] gotoxy::$2 = gotoxy::x#3 >= $28
|
|
Inversing boolean not [215] cputc::$2 = conio_cursor_x != $28 from [214] cputc::$1 = conio_cursor_x == $28
|
|
Inversing boolean not [226] cscroll::$1 = conio_cursor_y != $19 from [225] cscroll::$0 = conio_cursor_y == $19
|
|
Inversing boolean not [259] conio_c64_init::$1 = conio_c64_init::line#0 < $19 from [258] conio_c64_init::$0 = conio_c64_init::line#0 >= $19
|
|
Inversing boolean not [320] printf_number_buffer::$0 = 0 == printf_number_buffer::format_min_length#1 from [319] printf_number_buffer::$26 = 0 != printf_number_buffer::format_min_length#1
|
|
Inversing boolean not [324] printf_number_buffer::$1 = 0 == printf_number_buffer::format_justify_left#1 from [323] printf_number_buffer::$27 = 0 != printf_number_buffer::format_justify_left#1
|
|
Inversing boolean not [326] printf_number_buffer::$2 = 0 == printf_number_buffer::format_zero_padding#1 from [325] printf_number_buffer::$28 = 0 != printf_number_buffer::format_zero_padding#1
|
|
Inversing boolean not [339] printf_number_buffer::$20 = 0 == printf_number_buffer::buffer_sign#1 from [338] printf_number_buffer::$29 = 0 != printf_number_buffer::buffer_sign#1
|
|
Inversing boolean not [346] printf_number_buffer::$23 = printf_number_buffer::padding#1 >= 0 from [345] printf_number_buffer::$22 = printf_number_buffer::padding#1 < 0
|
|
Inversing boolean not [354] printf_number_buffer::$7 = 0 == printf_number_buffer::buffer_sign#2 from [353] printf_number_buffer::$30 = 0 != printf_number_buffer::buffer_sign#2
|
|
Inversing boolean not [372] printf_number_buffer::$12 = 0 == printf_number_buffer::format_upper_case#1 from [371] printf_number_buffer::$31 = 0 != printf_number_buffer::format_upper_case#1
|
|
Inversing boolean not [386] printf_number_buffer::$14 = 0 == printf_number_buffer::format_zero_padding#3 from [385] printf_number_buffer::$32 = 0 != printf_number_buffer::format_zero_padding#3
|
|
Successful SSA optimization Pass2UnaryNotSimplification
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Alias memcpy::src#2 = memcpy::src#3
|
|
Alias memcpy::dst#2 = memcpy::dst#3
|
|
Alias memcpy::src_end#1 = memcpy::src_end#2
|
|
Alias memcpy::destination#3 = memcpy::destination#5 memcpy::destination#4 memcpy::return#0 memcpy::return#4 memcpy::return#1
|
|
Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1
|
|
Alias memset::str#3 = memset::str#4
|
|
Alias memset::num#2 = memset::num#3
|
|
Alias memset::c#4 = memset::c#5
|
|
Alias memset::c#2 = memset::c#3
|
|
Alias memset::dst#2 = memset::dst#3
|
|
Alias memset::end#1 = memset::end#2
|
|
Alias memset::str#5 = memset::str#6
|
|
Alias strlen::len#2 = strlen::len#4 strlen::len#3 strlen::return#0 strlen::return#3 strlen::return#1
|
|
Alias strlen::str#2 = strlen::str#3
|
|
Alias toupper::ch#1 = toupper::ch#2 toupper::ch#3 toupper::return#1
|
|
Alias toupper::return#0 = toupper::$3
|
|
Alias toupper::return#2 = toupper::return#4
|
|
Alias strupr::src#0 = strupr::str#1
|
|
Alias strupr::src#2 = strupr::src#3 strupr::src#4
|
|
Alias strupr::str#2 = strupr::str#5 strupr::str#3 strupr::str#4 strupr::return#0 strupr::return#3 strupr::return#1
|
|
Alias toupper::return#3 = toupper::return#5
|
|
Alias uctoa::value#10 = uctoa::value#8 uctoa::value#12 uctoa::value#13 uctoa::value#9 uctoa::value#14 uctoa::value#15 uctoa::value#11
|
|
Alias uctoa::buffer#10 = uctoa::buffer#17 uctoa::buffer#21 uctoa::buffer#16 uctoa::buffer#18 uctoa::buffer#13 uctoa::buffer#19 uctoa::buffer#20 uctoa::buffer#6
|
|
Alias uctoa::radix#1 = uctoa::radix#2 uctoa::radix#3 uctoa::radix#4
|
|
Alias uctoa::digit_values#10 = uctoa::digit_values#5 uctoa::digit_values#6 uctoa::digit_values#9
|
|
Alias uctoa::digit#2 = uctoa::digit#3 uctoa::digit#6 uctoa::digit#5
|
|
Alias uctoa::value#2 = uctoa::value#5 uctoa::value#3 uctoa::$10 uctoa::value#4
|
|
Alias uctoa::started#2 = uctoa::started#3
|
|
Alias uctoa::buffer#11 = uctoa::buffer#12 uctoa::buffer#7 uctoa::buffer#8 uctoa::buffer#9
|
|
Alias uctoa::max_digits#10 = uctoa::max_digits#8 uctoa::max_digits#5 uctoa::max_digits#9
|
|
Alias uctoa::digit_value#0 = uctoa::digit_value#1
|
|
Alias uctoa_append::return#0 = uctoa_append::return#3
|
|
Alias uctoa::value#0 = uctoa::$9
|
|
Alias uctoa_append::digit#2 = uctoa_append::digit#4 uctoa_append::digit#3
|
|
Alias uctoa_append::value#2 = uctoa_append::value#3 uctoa_append::value#4 uctoa_append::return#1 uctoa_append::return#4 uctoa_append::return#2
|
|
Alias uctoa_append::sub#1 = uctoa_append::sub#2
|
|
Alias uctoa_append::buffer#1 = uctoa_append::buffer#4 uctoa_append::buffer#2
|
|
Alias clrscr::line_text#5 = clrscr::line_text#6
|
|
Alias clrscr::line_cols#5 = clrscr::line_cols#6
|
|
Alias clrscr::l#2 = clrscr::l#5
|
|
Alias clrscr::line_text#2 = clrscr::line_text#4 clrscr::line_text#3
|
|
Alias clrscr::c#2 = clrscr::c#3
|
|
Alias clrscr::line_cols#2 = clrscr::line_cols#4 clrscr::line_cols#3
|
|
Alias clrscr::l#3 = clrscr::l#6 clrscr::l#4
|
|
Alias gotoxy::x#5 = gotoxy::x#6
|
|
Alias gotoxy::y#5 = gotoxy::y#6
|
|
Alias cputc::c#0 = cputc::c#1
|
|
Alias printf_str::c#1 = printf_str::$0 printf_str::c#2
|
|
Alias printf_str::putc#4 = printf_str::putc#5
|
|
Alias printf_str::s#0 = printf_str::s#7
|
|
Alias printf_padding::pad#3 = printf_padding::pad#4 printf_padding::pad#6
|
|
Alias printf_padding::putc#3 = printf_padding::putc#4 printf_padding::putc#6
|
|
Alias printf_padding::i#2 = printf_padding::i#4 printf_padding::i#3
|
|
Alias printf_padding::length#3 = printf_padding::length#6 printf_padding::length#5
|
|
Alias printf_uchar::uvalue#2 = printf_uchar::uvalue#4 printf_uchar::uvalue#3
|
|
Alias printf_uchar::format_radix#3 = printf_uchar::format_radix#5 printf_uchar::format_radix#4
|
|
Alias printf_uchar::putc#3 = printf_uchar::putc#5 printf_uchar::putc#4
|
|
Alias printf_uchar::format_min_length#3 = printf_uchar::format_min_length#5 printf_uchar::format_min_length#4
|
|
Alias printf_uchar::format_justify_left#3 = printf_uchar::format_justify_left#5 printf_uchar::format_justify_left#4
|
|
Alias printf_uchar::format_sign_always#1 = printf_uchar::format_sign_always#4 printf_uchar::format_sign_always#5
|
|
Alias printf_uchar::format_zero_padding#3 = printf_uchar::format_zero_padding#5 printf_uchar::format_zero_padding#4
|
|
Alias printf_uchar::format_upper_case#3 = printf_uchar::format_upper_case#5 printf_uchar::format_upper_case#4
|
|
Alias printf_uchar::putc#1 = printf_uchar::putc#2
|
|
Alias printf_uchar::format_min_length#1 = printf_uchar::format_min_length#2
|
|
Alias printf_uchar::format_justify_left#1 = printf_uchar::format_justify_left#2
|
|
Alias printf_uchar::format_sign_always#2 = printf_uchar::format_sign_always#3
|
|
Alias printf_uchar::format_zero_padding#1 = printf_uchar::format_zero_padding#2
|
|
Alias printf_uchar::format_upper_case#1 = printf_uchar::format_upper_case#2
|
|
Alias printf_uchar::format_radix#1 = printf_uchar::format_radix#2
|
|
Alias printf_number_buffer::buffer_digits#1 = printf_number_buffer::buffer_digits#4 printf_number_buffer::buffer_digits#17 printf_number_buffer::buffer_digits#18
|
|
Alias printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#4 printf_number_buffer::buffer_sign#7 printf_number_buffer::buffer_sign#11
|
|
Alias printf_number_buffer::format_min_length#1 = printf_number_buffer::format_min_length#5 printf_number_buffer::format_min_length#3 printf_number_buffer::format_min_length#4
|
|
Alias printf_number_buffer::format_justify_left#11 = printf_number_buffer::format_justify_left#3 printf_number_buffer::format_justify_left#7 printf_number_buffer::format_justify_left#8
|
|
Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#15 printf_number_buffer::format_zero_padding#4 printf_number_buffer::format_zero_padding#11
|
|
Alias printf_number_buffer::putc#12 = printf_number_buffer::putc#20 printf_number_buffer::putc#18 printf_number_buffer::putc#19
|
|
Alias printf_number_buffer::format_upper_case#13 = printf_number_buffer::format_upper_case#15 printf_number_buffer::format_upper_case#9 printf_number_buffer::format_upper_case#14
|
|
Alias strlen::return#2 = strlen::return#4
|
|
Alias printf_number_buffer::padding#1 = printf_number_buffer::$21
|
|
Alias printf_number_buffer::len#0 = printf_number_buffer::len#3
|
|
Alias printf_number_buffer::format_justify_left#4 = printf_number_buffer::format_justify_left#5
|
|
Alias printf_number_buffer::format_zero_padding#5 = printf_number_buffer::format_zero_padding#6
|
|
Alias printf_number_buffer::buffer_sign#8 = printf_number_buffer::buffer_sign#9
|
|
Alias printf_number_buffer::putc#13 = printf_number_buffer::putc#14
|
|
Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#11
|
|
Alias printf_number_buffer::buffer_digits#14 = printf_number_buffer::buffer_digits#15
|
|
Alias printf_number_buffer::putc#1 = printf_number_buffer::putc#6 printf_number_buffer::putc#15
|
|
Alias printf_number_buffer::padding#12 = printf_number_buffer::padding#4 printf_number_buffer::padding#3
|
|
Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#6
|
|
Alias printf_number_buffer::format_zero_padding#1 = printf_number_buffer::format_zero_padding#16 printf_number_buffer::format_zero_padding#12
|
|
Alias printf_number_buffer::format_upper_case#12 = printf_number_buffer::format_upper_case#7 printf_number_buffer::format_upper_case#8
|
|
Alias printf_number_buffer::buffer_digits#12 = printf_number_buffer::buffer_digits#16 printf_number_buffer::buffer_digits#13
|
|
Alias printf_number_buffer::format_justify_left#1 = printf_number_buffer::format_justify_left#19 printf_number_buffer::format_justify_left#18
|
|
Alias printf_number_buffer::buffer_sign#2 = printf_number_buffer::buffer_sign#3
|
|
Alias printf_number_buffer::putc#2 = printf_number_buffer::putc#7
|
|
Alias printf_number_buffer::format_zero_padding#7 = printf_number_buffer::format_zero_padding#8
|
|
Alias printf_number_buffer::padding#10 = printf_number_buffer::padding#9
|
|
Alias printf_number_buffer::format_upper_case#4 = printf_number_buffer::format_upper_case#5
|
|
Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#9
|
|
Alias printf_number_buffer::format_justify_left#15 = printf_number_buffer::format_justify_left#16
|
|
Alias printf_number_buffer::putc#16 = printf_number_buffer::putc#3 printf_number_buffer::putc#8
|
|
Alias printf_number_buffer::padding#15 = printf_number_buffer::padding#6 printf_number_buffer::padding#5
|
|
Alias printf_number_buffer::format_upper_case#2 = printf_number_buffer::format_upper_case#6 printf_number_buffer::format_upper_case#3
|
|
Alias printf_number_buffer::buffer_digits#11 = printf_number_buffer::buffer_digits#8 printf_number_buffer::buffer_digits#7
|
|
Alias printf_number_buffer::format_zero_padding#17 = printf_number_buffer::format_zero_padding#19 printf_number_buffer::format_zero_padding#2
|
|
Alias printf_number_buffer::format_justify_left#12 = printf_number_buffer::format_justify_left#17 printf_number_buffer::format_justify_left#13
|
|
Alias printf_number_buffer::format_zero_padding#3 = printf_number_buffer::format_zero_padding#9
|
|
Alias printf_number_buffer::format_justify_left#2 = printf_number_buffer::format_justify_left#6
|
|
Alias printf_number_buffer::padding#11 = printf_number_buffer::padding#7 printf_number_buffer::padding#8
|
|
Alias printf_number_buffer::putc#11 = printf_number_buffer::putc#4 printf_number_buffer::putc#5
|
|
Alias printf_number_buffer::buffer_digits#3 = printf_number_buffer::buffer_digits#6 printf_number_buffer::buffer_digits#5
|
|
Alias printf_number_buffer::putc#10 = printf_number_buffer::putc#17 printf_number_buffer::putc#9
|
|
Alias printf_number_buffer::format_zero_padding#13 = printf_number_buffer::format_zero_padding#18 printf_number_buffer::format_zero_padding#14
|
|
Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#14 printf_number_buffer::format_justify_left#9
|
|
Alias printf_number_buffer::padding#13 = printf_number_buffer::padding#16 printf_number_buffer::padding#14
|
|
Alias main::toD0181_screen#0 = main::toD0181_screen#1
|
|
Alias main::toD0181_gfx#0 = main::toD0181_gfx#1
|
|
Alias main::toD0181_return#0 = main::toD0181_$6 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$0
|
|
Alias GETIN::return#0 = GETIN::return#3
|
|
Alias main::current#2 = main::current#3
|
|
Alias main::ch#0 = main::ch#1 main::ch#6 main::ch#4 main::ch#2 main::ch#5 main::ch#3 main::current#1
|
|
Alias petscii_to_screencode::return#0 = petscii_to_screencode::return#9
|
|
Alias main::return#0 = main::return#2
|
|
Alias petscii_to_screencode::petscii#1 = petscii_to_screencode::petscii#2 petscii_to_screencode::petscii#3 petscii_to_screencode::petscii#4 petscii_to_screencode::return#2 petscii_to_screencode::petscii#5 petscii_to_screencode::petscii#6 petscii_to_screencode::petscii#7 petscii_to_screencode::petscii#8 petscii_to_screencode::petscii#9 petscii_to_screencode::petscii#10 petscii_to_screencode::petscii#11 petscii_to_screencode::petscii#12
|
|
Alias petscii_to_screencode::return#1 = petscii_to_screencode::$10
|
|
Alias petscii_to_screencode::return#3 = petscii_to_screencode::$9
|
|
Alias petscii_to_screencode::return#4 = petscii_to_screencode::$8
|
|
Alias petscii_to_screencode::return#5 = petscii_to_screencode::$7
|
|
Alias petscii_to_screencode::return#6 = petscii_to_screencode::$6
|
|
Alias petscii_to_screencode::return#10 = petscii_to_screencode::return#8
|
|
Alias GETIN::return#1 = GETIN::return#4 GETIN::return#2
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Alias uctoa::value#10 = uctoa::value#7
|
|
Alias uctoa::buffer#10 = uctoa::buffer#15
|
|
Alias uctoa::digit#2 = uctoa::digit#4
|
|
Alias uctoa::max_digits#10 = uctoa::max_digits#6
|
|
Alias uctoa::digit_values#10 = uctoa::digit_values#7
|
|
Alias gotoxy::x#3 = gotoxy::x#5
|
|
Alias gotoxy::y#4 = gotoxy::y#5
|
|
Alias printf_uchar::uvalue#1 = printf_uchar::uvalue#2
|
|
Alias printf_uchar::format_radix#1 = printf_uchar::format_radix#3
|
|
Alias printf_uchar::putc#1 = printf_uchar::putc#3
|
|
Alias printf_uchar::format_min_length#1 = printf_uchar::format_min_length#3
|
|
Alias printf_uchar::format_justify_left#1 = printf_uchar::format_justify_left#3
|
|
Alias printf_uchar::format_sign_always#1 = printf_uchar::format_sign_always#2
|
|
Alias printf_uchar::format_zero_padding#1 = printf_uchar::format_zero_padding#3
|
|
Alias printf_uchar::format_upper_case#1 = printf_uchar::format_upper_case#3
|
|
Alias printf_number_buffer::format_min_length#1 = printf_number_buffer::format_min_length#2
|
|
Alias printf_number_buffer::format_justify_left#11 = printf_number_buffer::format_justify_left#4
|
|
Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#5
|
|
Alias printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#8
|
|
Alias printf_number_buffer::putc#12 = printf_number_buffer::putc#13
|
|
Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#13
|
|
Alias printf_number_buffer::buffer_digits#1 = printf_number_buffer::buffer_digits#14
|
|
Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2
|
|
Alias printf_number_buffer::format_zero_padding#1 = printf_number_buffer::format_zero_padding#7 printf_number_buffer::format_zero_padding#17 printf_number_buffer::format_zero_padding#13 printf_number_buffer::format_zero_padding#3
|
|
Alias printf_number_buffer::padding#10 = printf_number_buffer::padding#12 printf_number_buffer::padding#15 printf_number_buffer::padding#13 printf_number_buffer::padding#11
|
|
Alias printf_number_buffer::putc#1 = printf_number_buffer::putc#2 printf_number_buffer::putc#16 printf_number_buffer::putc#10 printf_number_buffer::putc#11
|
|
Alias printf_number_buffer::format_upper_case#1 = printf_number_buffer::format_upper_case#4 printf_number_buffer::format_upper_case#12 printf_number_buffer::format_upper_case#2
|
|
Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#12 printf_number_buffer::buffer_digits#11 printf_number_buffer::buffer_digits#3 printf_number_buffer::buffer_digits#2
|
|
Alias printf_number_buffer::format_justify_left#1 = printf_number_buffer::format_justify_left#15 printf_number_buffer::format_justify_left#12 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_justify_left#2
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Alias printf_number_buffer::format_justify_left#1 = printf_number_buffer::format_justify_left#11
|
|
Alias printf_number_buffer::format_zero_padding#1 = printf_number_buffer::format_zero_padding#10
|
|
Alias printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10
|
|
Alias printf_number_buffer::putc#1 = printf_number_buffer::putc#12
|
|
Alias printf_number_buffer::format_upper_case#1 = printf_number_buffer::format_upper_case#10
|
|
Alias printf_number_buffer::buffer_digits#1 = printf_number_buffer::buffer_digits#10
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Identical Phi Values memcpy::src_end#1 memcpy::src_end#0
|
|
Identical Phi Values memcpy::destination#3 memcpy::destination#2
|
|
Identical Phi Values memset::end#1 memset::end#0
|
|
Identical Phi Values memset::str#5 memset::str#3
|
|
Identical Phi Values memset::c#2 memset::c#4
|
|
Identical Phi Values strlen::str#4 strlen::str#1
|
|
Identical Phi Values toupper::ch#1 toupper::ch#0
|
|
Identical Phi Values strupr::src#0 strupr::str#0
|
|
Identical Phi Values strupr::str#2 strupr::src#0
|
|
Identical Phi Values uctoa::radix#1 uctoa::radix#0
|
|
Identical Phi Values uctoa::value#10 uctoa::value#1
|
|
Identical Phi Values uctoa::buffer#10 uctoa::buffer#5
|
|
Identical Phi Values uctoa::max_digits#10 uctoa::max_digits#7
|
|
Identical Phi Values uctoa::digit_values#10 uctoa::digit_values#8
|
|
Identical Phi Values uctoa_append::value#5 uctoa_append::value#0
|
|
Identical Phi Values uctoa_append::sub#3 uctoa_append::sub#0
|
|
Identical Phi Values uctoa_append::buffer#3 uctoa_append::buffer#0
|
|
Identical Phi Values uctoa_append::sub#1 uctoa_append::sub#3
|
|
Identical Phi Values uctoa_append::buffer#1 uctoa_append::buffer#3
|
|
Identical Phi Values clrscr::line_text#2 clrscr::line_text#5
|
|
Identical Phi Values clrscr::line_cols#2 clrscr::line_cols#5
|
|
Identical Phi Values clrscr::l#3 clrscr::l#2
|
|
Identical Phi Values printf_str::putc#4 printf_str::putc#6
|
|
Identical Phi Values printf_padding::length#3 printf_padding::length#4
|
|
Identical Phi Values printf_padding::pad#3 printf_padding::pad#5
|
|
Identical Phi Values printf_padding::putc#3 printf_padding::putc#5
|
|
Identical Phi Values printf_uchar::format_sign_always#1 printf_uchar::format_sign_always#0
|
|
Identical Phi Values printf_uchar::uvalue#1 printf_uchar::uvalue#0
|
|
Identical Phi Values printf_uchar::format_radix#1 printf_uchar::format_radix#0
|
|
Identical Phi Values printf_uchar::putc#1 printf_uchar::putc#0
|
|
Identical Phi Values printf_uchar::format_min_length#1 printf_uchar::format_min_length#0
|
|
Identical Phi Values printf_uchar::format_justify_left#1 printf_uchar::format_justify_left#0
|
|
Identical Phi Values printf_uchar::format_zero_padding#1 printf_uchar::format_zero_padding#0
|
|
Identical Phi Values printf_uchar::format_upper_case#1 printf_uchar::format_upper_case#0
|
|
Identical Phi Values printf_number_buffer::format_min_length#1 printf_number_buffer::format_min_length#0
|
|
Identical Phi Values printf_number_buffer::format_justify_left#1 printf_number_buffer::format_justify_left#0
|
|
Identical Phi Values printf_number_buffer::format_zero_padding#1 printf_number_buffer::format_zero_padding#0
|
|
Identical Phi Values printf_number_buffer::buffer_digits#1 printf_number_buffer::buffer_digits#0
|
|
Identical Phi Values printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0
|
|
Identical Phi Values printf_number_buffer::putc#1 printf_number_buffer::putc#0
|
|
Identical Phi Values printf_number_buffer::format_upper_case#1 printf_number_buffer::format_upper_case#0
|
|
Identical Phi Values petscii_to_screencode::petscii#1 petscii_to_screencode::petscii#0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identical Phi Values memset::return#0 memset::str#3
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Simple Condition memcpy::$1 [7] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
|
|
Simple Condition memset::$1 [14] if(memset::num#2<=0) goto memset::@1
|
|
Simple Condition memset::$3 [21] if(memset::dst#2!=memset::end#0) goto memset::@4
|
|
Simple Condition strlen::$0 [29] if(0!=*strlen::str#2) goto strlen::@2
|
|
Simple Condition strupr::$1 [44] if(0!=*strupr::src#2) goto strupr::@2
|
|
Simple Condition uctoa::$0 [56] if(uctoa::radix#0==DECIMAL) goto uctoa::@1
|
|
Simple Condition uctoa::$1 [60] if(uctoa::radix#0==HEXADECIMAL) goto uctoa::@2
|
|
Simple Condition uctoa::$2 [64] if(uctoa::radix#0==OCTAL) goto uctoa::@3
|
|
Simple Condition uctoa::$3 [68] if(uctoa::radix#0==BINARY) goto uctoa::@4
|
|
Simple Condition uctoa::$5 [85] if(uctoa::digit#2<uctoa::$4) goto uctoa::@11
|
|
Simple Condition uctoa_append::$0 [108] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2
|
|
Simple Condition clrscr::$0 [118] if(clrscr::l#2<$19) goto clrscr::@2
|
|
Simple Condition clrscr::$1 [126] if(clrscr::c#2<$28) goto clrscr::@5
|
|
Simple Condition gotoxy::$1 [136] if(gotoxy::y#3<=$19) goto gotoxy::@1
|
|
Simple Condition gotoxy::$3 [139] if(gotoxy::x#3<$28) goto gotoxy::@2
|
|
Simple Condition cputc::$0 [154] if(cputc::c#0=='
|
|
') goto cputc::@1
|
|
Simple Condition cputc::$2 [160] if(conio_cursor_x!=$28) goto cputc::@return
|
|
Simple Condition cscroll::$1 [170] if(conio_cursor_y!=$19) goto cscroll::@return
|
|
Simple Condition cscroll::$7 [172] if(0!=conio_scroll_enable) goto cscroll::@3
|
|
Simple Condition conio_c64_init::$1 [202] if(conio_c64_init::line#0<$19) goto conio_c64_init::@1
|
|
Simple Condition printf_str::$2 [215] if(0!=printf_str::c#1) goto printf_str::@2
|
|
Simple Condition printf_padding::$0 [224] if(printf_padding::i#2<printf_padding::length#4) goto printf_padding::@2
|
|
Simple Condition printf_uchar::$5 [232] if(0!=printf_uchar::format_sign_always#0) goto printf_uchar::@1
|
|
Simple Condition printf_number_buffer::$0 [255] if(0==printf_number_buffer::format_min_length#0) goto printf_number_buffer::@1
|
|
Simple Condition printf_number_buffer::$20 [269] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@13
|
|
Simple Condition printf_number_buffer::$23 [274] if(printf_number_buffer::padding#1>=0) goto printf_number_buffer::@1
|
|
Simple Condition printf_number_buffer::$7 [278] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@3
|
|
Simple Condition printf_number_buffer::$12 [290] if(0==printf_number_buffer::format_upper_case#0) goto printf_number_buffer::@5
|
|
Simple Condition petscii_to_screencode::$0 [361] if(petscii_to_screencode::petscii#0<$20) goto petscii_to_screencode::@1
|
|
Simple Condition petscii_to_screencode::$1 [364] if(petscii_to_screencode::petscii#0<$40) goto petscii_to_screencode::@2
|
|
Simple Condition petscii_to_screencode::$2 [366] if(petscii_to_screencode::petscii#0<$60) goto petscii_to_screencode::@3
|
|
Simple Condition petscii_to_screencode::$3 [369] if(petscii_to_screencode::petscii#0<$80) goto petscii_to_screencode::@4
|
|
Simple Condition petscii_to_screencode::$4 [372] if(petscii_to_screencode::petscii#0<$a0) goto petscii_to_screencode::@5
|
|
Simple Condition petscii_to_screencode::$5 [375] if(petscii_to_screencode::petscii#0<$ff) goto petscii_to_screencode::@6
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Rewriting && if()-condition to two if()s [36] toupper::$2 = toupper::$0 && toupper::$1
|
|
Rewriting ! if()-condition to reversed if() [89] uctoa::$8 = ! uctoa::$7
|
|
Rewriting || if()-condition to two if()s [88] uctoa::$7 = uctoa::started#2 || uctoa::$6
|
|
Rewriting ! if()-condition to reversed if() [261] printf_number_buffer::$5 = ! printf_number_buffer::$4
|
|
Rewriting && if()-condition to two if()s [260] printf_number_buffer::$4 = printf_number_buffer::$3 && printf_number_buffer::padding#10
|
|
Rewriting && if()-condition to two if()s [259] printf_number_buffer::$3 = printf_number_buffer::$1 && printf_number_buffer::$2
|
|
Rewriting ! if()-condition to reversed if() [284] printf_number_buffer::$10 = ! printf_number_buffer::$9
|
|
Rewriting && if()-condition to two if()s [283] printf_number_buffer::$9 = printf_number_buffer::format_zero_padding#0 && printf_number_buffer::padding#10
|
|
Rewriting ! if()-condition to reversed if() [301] printf_number_buffer::$17 = ! printf_number_buffer::$16
|
|
Rewriting && if()-condition to two if()s [300] printf_number_buffer::$16 = printf_number_buffer::$15 && printf_number_buffer::padding#10
|
|
Rewriting && if()-condition to two if()s [299] printf_number_buffer::$15 = printf_number_buffer::format_justify_left#0 && printf_number_buffer::$14
|
|
Rewriting ! if()-condition to reversed if() [330] main::$5 = ! main::$4
|
|
Rewriting && if()-condition to two if()s [329] main::$4 = main::ch#0 && main::$3
|
|
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
|
Warning! Adding boolean cast to non-boolean condition uctoa::started#2
|
|
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::format_zero_padding#0
|
|
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::format_justify_left#0
|
|
Warning! Adding boolean cast to non-boolean condition main::ch#0
|
|
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::padding#10
|
|
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::padding#10
|
|
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::padding#10
|
|
Constant right-side identified [175] memcpy::num#0 = (unumber)$19*$28-$28
|
|
Constant right-side identified [180] memcpy::num#1 = (unumber)$19*$28-$28
|
|
Constant right-side identified [207] conio_c64_init::line#1 = (unumber)$19-1
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant strlen::len#0 = 0
|
|
Constant uctoa::max_digits#0 = 0
|
|
Constant uctoa::digit_values#0 = (char *) 0
|
|
Constant uctoa::max_digits#1 = 3
|
|
Constant uctoa::digit_values#1 = RADIX_DECIMAL_VALUES_CHAR
|
|
Constant uctoa::max_digits#2 = 2
|
|
Constant uctoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_CHAR
|
|
Constant uctoa::max_digits#3 = 3
|
|
Constant uctoa::digit_values#3 = RADIX_OCTAL_VALUES_CHAR
|
|
Constant uctoa::max_digits#4 = 8
|
|
Constant uctoa::digit_values#4 = RADIX_BINARY_VALUES_CHAR
|
|
Constant uctoa::started#0 = 0
|
|
Constant uctoa::digit#0 = 0
|
|
Constant uctoa::started#1 = 1
|
|
Constant uctoa_append::digit#0 = 0
|
|
Constant clrscr::line_text#0 = DEFAULT_SCREEN
|
|
Constant clrscr::line_cols#0 = COLORRAM
|
|
Constant clrscr::l#0 = 0
|
|
Constant clrscr::c#0 = 0
|
|
Constant gotoxy::y#0 = 0
|
|
Constant gotoxy::x#0 = 0
|
|
Constant memcpy::destination#0 = (void *)DEFAULT_SCREEN
|
|
Constant memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
|
|
Constant memcpy::num#0 = (unumber)$19*$28-$28
|
|
Constant memcpy::destination#1 = (void *)COLORRAM
|
|
Constant memcpy::source#1 = (void *)COLORRAM+$28
|
|
Constant memcpy::num#1 = (unumber)$19*$28-$28
|
|
Constant memset::str#0 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28
|
|
Constant memset::c#0 = ' '
|
|
Constant memset::num#0 = $28
|
|
Constant memset::str#1 = (void *)COLORRAM+(unsigned int)$19*$28-$28
|
|
Constant memset::num#1 = $28
|
|
Constant gotoxy::x#1 = 0
|
|
Constant gotoxy::y#1 = 0
|
|
Constant gotoxy::x#2 = 0
|
|
Constant conio_c64_init::line#1 = (unumber)$19-1
|
|
Constant printf_str::c#0 = 0
|
|
Constant printf_padding::i#0 = 0
|
|
Constant printf_uchar::$1 = '+'
|
|
Constant printf_uchar::$0 = 0
|
|
Constant uctoa::buffer#5 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
Constant printf_number_buffer::buffer_digits#0 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
Constant printf_number_buffer::padding#0 = 0
|
|
Constant printf_number_buffer::padding#2 = 0
|
|
Constant printf_padding::pad#0 = ' '
|
|
Constant printf_padding::pad#1 = '0'
|
|
Constant printf_padding::pad#2 = ' '
|
|
Constant main::toD0181_screen#0 = DEFAULT_SCREEN
|
|
Constant main::toD0181_gfx#0 = DEFAULT_FONT_MIXED
|
|
Constant main::current#0 = 0
|
|
Constant printf_str::putc#1 = &cputc
|
|
Constant printf_str::s#2 = main::s
|
|
Constant printf_str::putc#2 = &cputc
|
|
Constant printf_str::s#3 = main::s1
|
|
Constant printf_uchar::putc#0 = &cputc
|
|
Constant printf_uchar::format_min_length#0 = 2
|
|
Constant printf_uchar::format_justify_left#0 = 0
|
|
Constant printf_uchar::format_sign_always#0 = 0
|
|
Constant printf_uchar::format_zero_padding#0 = 0
|
|
Constant printf_uchar::format_upper_case#0 = 0
|
|
Constant printf_uchar::format_radix#0 = HEXADECIMAL
|
|
Constant printf_str::putc#3 = &cputc
|
|
Constant printf_str::s#4 = main::s2
|
|
Constant petscii_to_screencode::return#7 = $5e
|
|
Constant conio_textcolor = LIGHT_BLUE
|
|
Constant conio_scroll_enable = 1
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant memset::c#1 = conio_textcolor
|
|
Constant uctoa::radix#0 = printf_uchar::format_radix#0
|
|
Constant printf_number_buffer::putc#0 = printf_uchar::putc#0
|
|
Constant printf_number_buffer::format_min_length#0 = printf_uchar::format_min_length#0
|
|
Constant printf_number_buffer::format_justify_left#0 = printf_uchar::format_justify_left#0
|
|
Constant printf_number_buffer::format_sign_always#0 = printf_uchar::format_sign_always#0
|
|
Constant printf_number_buffer::format_zero_padding#0 = printf_uchar::format_zero_padding#0
|
|
Constant printf_number_buffer::format_upper_case#0 = printf_uchar::format_upper_case#0
|
|
Constant printf_number_buffer::format_radix#0 = printf_uchar::format_radix#0
|
|
Constant strlen::str#1 = printf_number_buffer::buffer_digits#0
|
|
Constant printf_str::s#1 = printf_number_buffer::buffer_digits#0
|
|
Constant strupr::str#0 = printf_number_buffer::buffer_digits#0
|
|
Constant main::toD0181_$7 = (unsigned int)main::toD0181_screen#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant printf_number_buffer::$25 = (signed char)printf_number_buffer::format_min_length#0
|
|
Constant printf_padding::putc#0 = printf_number_buffer::putc#0
|
|
Constant printf_padding::putc#1 = printf_number_buffer::putc#0
|
|
Constant printf_str::putc#0 = printf_number_buffer::putc#0
|
|
Constant strupr::return#2 = strupr::str#0
|
|
Constant printf_padding::putc#2 = printf_number_buffer::putc#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant value identified (unsigned int)main::toD0181_gfx#0 in [317] main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0
|
|
Successful SSA optimization Pass2ConstantValues
|
|
Replacing constant pointer function [287] callexecute cputc
|
|
Successful SSA optimization Pass2ConstantCallPointerIdentification
|
|
if() condition always false - eliminating [56] if(uctoa::radix#0==DECIMAL) goto uctoa::@1
|
|
if() condition always true - replacing block destination [60] if(uctoa::radix#0==HEXADECIMAL) goto uctoa::@2
|
|
if() condition always false - eliminating [64] if(uctoa::radix#0==OCTAL) goto uctoa::@3
|
|
if() condition always false - eliminating [68] if(uctoa::radix#0==BINARY) goto uctoa::@4
|
|
if() condition always true - replacing block destination [172] if(0!=conio_scroll_enable) goto cscroll::@3
|
|
if() condition always false - eliminating [232] if(0!=printf_uchar::format_sign_always#0) goto printf_uchar::@1
|
|
Removing PHI-reference to removed block (printf_number_buffer) in block printf_number_buffer::@1
|
|
if() condition always false - eliminating [255] if(0==printf_number_buffer::format_min_length#0) goto printf_number_buffer::@1
|
|
if() condition always true - replacing block destination [290] if(0==printf_number_buffer::format_upper_case#0) goto printf_number_buffer::@5
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Rewriting conditional comparison [136] if(gotoxy::y#3<=$19) goto gotoxy::@1
|
|
Simplifying expression containing zero (char *)&printf_buffer in [236] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) = printf_uchar::$2
|
|
Simplifying expression containing zero (char *)&printf_buffer in [242] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN)
|
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
|
Eliminating variable toupper::$0 from unused block toupper
|
|
Eliminating variable toupper::$1 from unused block toupper
|
|
Eliminating variable toupper::return#0 from unused block toupper::@1
|
|
Eliminating variable toupper::return#2 from unused block toupper::@return
|
|
Eliminating variable strupr::src#2 from unused block strupr::@1
|
|
Eliminating variable toupper::ch#0 from unused block strupr::@2
|
|
Eliminating variable toupper::return#3 from unused block strupr::@2
|
|
Eliminating variable strupr::$0 from unused block strupr::@4
|
|
Eliminating variable strupr::src#1 from unused block strupr::@4
|
|
Eliminating variable uctoa::buffer#0 from unused block uctoa::@9
|
|
Eliminating variable uctoa::buffer#1 from unused block uctoa::@9
|
|
Eliminating variable uctoa::buffer#2 from unused block uctoa::@9
|
|
Eliminating variable main::return#0 from unused block main::@return
|
|
Removing unused procedure toupper
|
|
Removing unused procedure block toupper
|
|
Removing unused procedure block toupper::@1
|
|
Removing PHI-reference to removed block (toupper::@1) in block toupper::@return
|
|
Removing unused procedure block toupper::@2
|
|
Removing PHI-reference to removed block (toupper::@2) in block toupper::@return
|
|
Removing unused procedure block toupper::@return
|
|
Removing unused procedure block toupper::@3
|
|
Removing unused procedure strupr
|
|
Removing unused procedure block strupr
|
|
Removing PHI-reference to removed block (strupr) in block strupr::@1
|
|
Removing unused procedure block strupr::@1
|
|
Removing unused procedure block strupr::@2
|
|
Removing unused procedure block strupr::@4
|
|
Removing unused procedure block strupr::@3
|
|
Removing unused procedure block strupr::@return
|
|
Removing PHI-reference to removed block (uctoa::@1) in block uctoa::@5
|
|
Removing PHI-reference to removed block (uctoa::@1) in block uctoa::@5
|
|
Removing unused block uctoa::@1
|
|
Removing unused block uctoa::@7
|
|
Removing PHI-reference to removed block (uctoa::@3) in block uctoa::@5
|
|
Removing PHI-reference to removed block (uctoa::@3) in block uctoa::@5
|
|
Removing unused block uctoa::@3
|
|
Removing unused block uctoa::@8
|
|
Removing PHI-reference to removed block (uctoa::@4) in block uctoa::@5
|
|
Removing PHI-reference to removed block (uctoa::@4) in block uctoa::@5
|
|
Removing unused block uctoa::@4
|
|
Removing unused block uctoa::@9
|
|
Removing PHI-reference to removed block (cscroll::@2) in block gotoxy
|
|
Removing PHI-reference to removed block (cscroll::@2) in block gotoxy
|
|
Removing unused block cscroll::@2
|
|
Removing unused block cscroll::@8
|
|
Removing PHI-reference to removed block (printf_uchar::@1) in block printf_uchar::@3
|
|
Removing unused block printf_uchar::@1
|
|
Removing unused block printf_number_buffer::@11
|
|
Removing unused block printf_number_buffer::@19
|
|
Removing unused block main::@return
|
|
Successful SSA optimization Pass2EliminateUnusedBlocks
|
|
Eliminating unused variable memcpy::return#2 and assignment [99] memcpy::return#2 = memcpy::destination#2
|
|
Eliminating unused variable memcpy::return#3 and assignment [101] memcpy::return#3 = memcpy::destination#2
|
|
Eliminating unused variable memset::return#2 and assignment [103] memset::return#2 = memset::str#3
|
|
Eliminating unused variable memset::return#3 and assignment [105] memset::return#3 = memset::str#3
|
|
Eliminating unused variable main::return#1 and assignment [220] main::return#1 = main::return#0(null)
|
|
Eliminating unused constant BINARY
|
|
Eliminating unused constant OCTAL
|
|
Eliminating unused constant DECIMAL
|
|
Eliminating unused constant uctoa::max_digits#0
|
|
Eliminating unused constant uctoa::digit_values#0
|
|
Eliminating unused constant uctoa::max_digits#1
|
|
Eliminating unused constant uctoa::digit_values#1
|
|
Eliminating unused constant uctoa::max_digits#3
|
|
Eliminating unused constant uctoa::digit_values#3
|
|
Eliminating unused constant uctoa::max_digits#4
|
|
Eliminating unused constant uctoa::digit_values#4
|
|
Eliminating unused constant uctoa::radix#0
|
|
Eliminating unused constant gotoxy::x#1
|
|
Eliminating unused constant gotoxy::y#1
|
|
Eliminating unused constant printf_str::c#0
|
|
Eliminating unused constant printf_uchar::$1
|
|
Eliminating unused constant printf_number_buffer::padding#0
|
|
Eliminating unused constant printf_number_buffer::format_sign_always#0
|
|
Eliminating unused constant printf_number_buffer::format_upper_case#0
|
|
Eliminating unused constant printf_number_buffer::format_radix#0
|
|
Eliminating unused constant OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN
|
|
Eliminating unused constant conio_scroll_enable
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Eliminating unused constant RADIX_BINARY_VALUES_CHAR
|
|
Eliminating unused constant RADIX_OCTAL_VALUES_CHAR
|
|
Eliminating unused constant RADIX_DECIMAL_VALUES_CHAR
|
|
Eliminating unused constant printf_uchar::format_sign_always#0
|
|
Eliminating unused constant printf_uchar::format_upper_case#0
|
|
Eliminating unused constant printf_uchar::format_radix#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Eliminating unused constant HEXADECIMAL
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Adding number conversion cast (unumber) 0 in uctoa::$11 = 0 != uctoa::started#2
|
|
Adding number conversion cast (unumber) $19+1 in if(gotoxy::y#3<$19+1) goto gotoxy::@1
|
|
Adding number conversion cast (unumber) 1 in if(gotoxy::y#3<(unumber)$19+1) goto gotoxy::@1
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$33 = 0 != printf_number_buffer::format_zero_padding#0
|
|
Adding number conversion cast (unumber) 0 in printf_number_buffer::$34 = 0 != printf_number_buffer::format_justify_left#0
|
|
Adding number conversion cast (unumber) 0 in main::$8 = 0 != main::ch#0
|
|
Adding number conversion cast (snumber) 0 in printf_number_buffer::$35 = 0 != printf_number_buffer::padding#10
|
|
Adding number conversion cast (snumber) 0 in printf_number_buffer::$36 = 0 != printf_number_buffer::padding#10
|
|
Adding number conversion cast (snumber) 0 in printf_number_buffer::$37 = 0 != printf_number_buffer::padding#10
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $19+(unumber)1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Finalized signed number type (signed char) 0
|
|
Finalized signed number type (signed char) 0
|
|
Finalized signed number type (signed char) 0
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Identical Phi Values uctoa::max_digits#7 uctoa::max_digits#2
|
|
Identical Phi Values uctoa::digit_values#8 uctoa::digit_values#2
|
|
Identical Phi Values gotoxy::y#3 gotoxy::y#2
|
|
Identical Phi Values gotoxy::x#3 gotoxy::x#2
|
|
Identical Phi Values printf_uchar::$2 printf_uchar::$0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Simple Condition uctoa::$11 [34] if(0!=uctoa::started#2) goto uctoa::@14
|
|
Simple Condition printf_number_buffer::$1 [139] if(0==printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@22
|
|
Simple Condition printf_number_buffer::$33 [153] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@23
|
|
Simple Condition printf_number_buffer::$34 [162] if(0!=printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@25
|
|
Simple Condition main::$8 [181] if(0!=main::ch#0) goto main::@11
|
|
Simple Condition uctoa::$6 [217] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@14
|
|
Simple Condition printf_number_buffer::$35 [219] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@8
|
|
Simple Condition printf_number_buffer::$2 [220] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@21
|
|
Simple Condition printf_number_buffer::$36 [222] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@10
|
|
Simple Condition printf_number_buffer::$37 [224] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@12
|
|
Simple Condition printf_number_buffer::$14 [225] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@24
|
|
Simple Condition main::$3 [226] if(main::ch#0!=main::current#2) goto main::@2
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Negating conditional jump and destination [139] if(0!=printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@2
|
|
Negating conditional jump and destination [153] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@4
|
|
Negating conditional jump and destination [162] if(0==printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@return
|
|
Negating conditional jump and destination [181] if(0==main::ch#0) goto main::@1
|
|
Negating conditional jump and destination [220] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@2
|
|
Negating conditional jump and destination [225] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@return
|
|
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
|
|
Constant right-side identified [29] uctoa::$4 = uctoa::max_digits#2 - 1
|
|
Constant right-side identified [166] main::toD0181_$0 = main::toD0181_$7 & $3fff
|
|
Constant right-side identified [169] main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant uctoa::$4 = uctoa::max_digits#2-1
|
|
Constant main::toD0181_$0 = main::toD0181_$7&$3fff
|
|
Constant main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
if() condition always true - replacing block destination [71] if(gotoxy::x#2<$28) goto gotoxy::@2
|
|
if() condition always false - eliminating [139] if(0!=printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@2
|
|
if() condition always true - replacing block destination [153] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@4
|
|
if() condition always true - replacing block destination [162] if(0==printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@return
|
|
if() condition always false - eliminating [220] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@2
|
|
if() condition always false - eliminating [225] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@return
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Eliminating variable printf_padding::length#1 from unused block printf_number_buffer::@10
|
|
Eliminating variable printf_padding::length#2 from unused block printf_number_buffer::@12
|
|
Removing PHI-reference to removed block (gotoxy::@4) in block gotoxy::@2
|
|
Removing unused block gotoxy::@4
|
|
Removing PHI-reference to removed block (printf_number_buffer::@10) in block printf_padding
|
|
Removing PHI-reference to removed block (printf_number_buffer::@10) in block printf_padding
|
|
Removing PHI-reference to removed block (printf_number_buffer::@10) in block printf_padding
|
|
Removing unused block printf_number_buffer::@10
|
|
Removing unused block printf_number_buffer::@17
|
|
Removing PHI-reference to removed block (printf_number_buffer::@12) in block printf_padding
|
|
Removing PHI-reference to removed block (printf_number_buffer::@12) in block printf_padding
|
|
Removing PHI-reference to removed block (printf_number_buffer::@12) in block printf_padding
|
|
Removing unused block printf_number_buffer::@12
|
|
Removing unused block printf_number_buffer::@20
|
|
Removing unused block printf_number_buffer::@23
|
|
Removing unused block printf_number_buffer::@24
|
|
Removing unused block printf_number_buffer::@25
|
|
Successful SSA optimization Pass2EliminateUnusedBlocks
|
|
Eliminating unused constant gotoxy::x#0
|
|
Eliminating unused constant printf_padding::pad#1
|
|
Eliminating unused constant printf_padding::pad#2
|
|
Eliminating unused constant printf_padding::putc#1
|
|
Eliminating unused constant printf_padding::putc#2
|
|
Eliminating unused constant printf_number_buffer::format_justify_left#0
|
|
Eliminating unused constant printf_number_buffer::format_zero_padding#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Eliminating unused constant printf_uchar::format_justify_left#0
|
|
Eliminating unused constant printf_uchar::format_zero_padding#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Identical Phi Values gotoxy::x#4 gotoxy::x#2
|
|
Identical Phi Values printf_padding::length#4 printf_padding::length#0
|
|
Identical Phi Values printf_padding::pad#5 printf_padding::pad#0
|
|
Identical Phi Values printf_padding::putc#5 printf_padding::putc#0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Constant right-side identified [147] main::toD0181_$1 = main::toD0181_$0 * 4
|
|
Constant right-side identified [149] main::toD0181_$4 = main::toD0181_$3 / 4
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant main::toD0181_$1 = main::toD0181_$0*4
|
|
Constant main::toD0181_$4 = main::toD0181_$3/4
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Replacing constant pointer function [119] callexecute cputc
|
|
Successful SSA optimization Pass2ConstantCallPointerIdentification
|
|
Eliminating unused constant printf_padding::putc#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Constant right-side identified [145] main::toD0181_$2 = byte1 main::toD0181_$1
|
|
Constant right-side identified [146] main::toD0181_$5 = main::toD0181_$4 & $f
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant main::toD0181_$2 = byte1 main::toD0181_$1
|
|
Constant main::toD0181_$5 = main::toD0181_$4&$f
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Constant right-side identified [145] main::toD0181_return#0 = main::toD0181_$2 | main::toD0181_$5
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Inlining Noop Cast [1] memcpy::src#0 = (char *)memcpy::source#2 keeping memcpy::source#2
|
|
Inlining Noop Cast [2] memcpy::dst#0 = (char *)memcpy::destination#2 keeping memcpy::destination#2
|
|
Inlining Noop Cast [3] memcpy::$2 = (char *)memcpy::source#2 keeping memcpy::source#2
|
|
Inlining Noop Cast [13] memset::$4 = (char *)memset::str#3 keeping memset::str#3
|
|
Inlining Noop Cast [15] memset::dst#0 = (char *)memset::str#3 keeping memset::str#3
|
|
Successful SSA optimization Pass2NopCastInlining
|
|
Rewriting multiplication to use shift and addition[69] gotoxy::line_offset#0 = gotoxy::$7 * $28
|
|
Inlining constant with var siblings memcpy::destination#0
|
|
Inlining constant with var siblings memcpy::source#0
|
|
Inlining constant with var siblings memcpy::num#0
|
|
Inlining constant with var siblings memcpy::destination#1
|
|
Inlining constant with var siblings memcpy::source#1
|
|
Inlining constant with var siblings memcpy::num#1
|
|
Inlining constant with var siblings memset::str#0
|
|
Inlining constant with var siblings memset::c#0
|
|
Inlining constant with var siblings memset::num#0
|
|
Inlining constant with var siblings memset::str#1
|
|
Inlining constant with var siblings memset::num#1
|
|
Inlining constant with var siblings memset::c#1
|
|
Inlining constant with var siblings strlen::len#0
|
|
Inlining constant with var siblings strlen::str#1
|
|
Inlining constant with var siblings uctoa::started#0
|
|
Inlining constant with var siblings uctoa::digit#0
|
|
Inlining constant with var siblings uctoa::started#1
|
|
Inlining constant with var siblings uctoa::buffer#5
|
|
Inlining constant with var siblings uctoa_append::digit#0
|
|
Inlining constant with var siblings clrscr::line_text#0
|
|
Inlining constant with var siblings clrscr::line_cols#0
|
|
Inlining constant with var siblings clrscr::l#0
|
|
Inlining constant with var siblings clrscr::c#0
|
|
Inlining constant with var siblings gotoxy::y#0
|
|
Inlining constant with var siblings conio_c64_init::line#1
|
|
Inlining constant with var siblings printf_str::putc#1
|
|
Inlining constant with var siblings printf_str::s#2
|
|
Inlining constant with var siblings printf_str::putc#2
|
|
Inlining constant with var siblings printf_str::s#3
|
|
Inlining constant with var siblings printf_str::putc#3
|
|
Inlining constant with var siblings printf_str::s#4
|
|
Inlining constant with var siblings printf_str::s#1
|
|
Inlining constant with var siblings printf_str::putc#0
|
|
Inlining constant with var siblings printf_padding::i#0
|
|
Inlining constant with var siblings printf_number_buffer::padding#2
|
|
Inlining constant with var siblings main::current#0
|
|
Inlining constant with var siblings petscii_to_screencode::return#7
|
|
Constant inlined uctoa_append::digit#0 = 0
|
|
Constant inlined printf_str::putc#0 = printf_uchar::putc#0
|
|
Constant inlined conio_textcolor = LIGHT_BLUE
|
|
Constant inlined printf_str::putc#1 = &cputc
|
|
Constant inlined memset::num#1 = $28
|
|
Constant inlined printf_str::putc#2 = &cputc
|
|
Constant inlined memset::num#0 = $28
|
|
Constant inlined printf_str::putc#3 = &cputc
|
|
Constant inlined printf_number_buffer::$25 = (signed char)printf_uchar::format_min_length#0
|
|
Constant inlined clrscr::l#0 = 0
|
|
Constant inlined strlen::len#0 = 0
|
|
Constant inlined petscii_to_screencode::return#7 = $5e
|
|
Constant inlined printf_str::s#3 = main::s1
|
|
Constant inlined printf_str::s#4 = main::s2
|
|
Constant inlined printf_str::s#1 = printf_number_buffer::buffer_digits#0
|
|
Constant inlined printf_str::s#2 = main::s
|
|
Constant inlined printf_number_buffer::padding#2 = 0
|
|
Constant inlined uctoa::digit#0 = 0
|
|
Constant inlined main::toD0181_$7 = (unsigned int)DEFAULT_SCREEN
|
|
Constant inlined main::current#0 = 0
|
|
Constant inlined clrscr::line_text#0 = DEFAULT_SCREEN
|
|
Constant inlined main::toD0181_$2 = byte1 (unsigned int)DEFAULT_SCREEN&$3fff*4
|
|
Constant inlined main::toD0181_$1 = (unsigned int)DEFAULT_SCREEN&$3fff*4
|
|
Constant inlined main::toD0181_$0 = (unsigned int)DEFAULT_SCREEN&$3fff
|
|
Constant inlined memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
|
|
Constant inlined main::toD0181_$5 = byte1 (unsigned int)DEFAULT_FONT_MIXED/4&$f
|
|
Constant inlined main::toD0181_$4 = byte1 (unsigned int)DEFAULT_FONT_MIXED/4
|
|
Constant inlined main::toD0181_$3 = byte1 (unsigned int)DEFAULT_FONT_MIXED
|
|
Constant inlined memset::c#0 = ' '
|
|
Constant inlined memset::c#1 = LIGHT_BLUE
|
|
Constant inlined main::toD0181_screen#0 = DEFAULT_SCREEN
|
|
Constant inlined main::toD0181_gfx#0 = DEFAULT_FONT_MIXED
|
|
Constant inlined uctoa::$4 = uctoa::max_digits#2-1
|
|
Constant inlined uctoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_CHAR
|
|
Constant inlined uctoa::started#0 = 0
|
|
Constant inlined uctoa::started#1 = 1
|
|
Constant inlined printf_uchar::$0 = 0
|
|
Constant inlined strlen::str#1 = printf_number_buffer::buffer_digits#0
|
|
Constant inlined memcpy::destination#0 = (void *)DEFAULT_SCREEN
|
|
Constant inlined memcpy::destination#1 = (void *)COLORRAM
|
|
Constant inlined conio_c64_init::line#1 = (char)$19-1
|
|
Constant inlined memcpy::source#1 = (void *)COLORRAM+$28
|
|
Constant inlined printf_number_buffer::format_min_length#0 = printf_uchar::format_min_length#0
|
|
Constant inlined memset::str#1 = (void *)COLORRAM+(unsigned int)$19*$28-$28
|
|
Constant inlined memset::str#0 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28
|
|
Constant inlined printf_padding::i#0 = 0
|
|
Constant inlined printf_number_buffer::putc#0 = printf_uchar::putc#0
|
|
Constant inlined uctoa::buffer#5 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
Constant inlined memcpy::num#1 = (unsigned int)$19*$28-$28
|
|
Constant inlined memcpy::num#0 = (unsigned int)$19*$28-$28
|
|
Constant inlined gotoxy::y#0 = 0
|
|
Constant inlined clrscr::c#0 = 0
|
|
Constant inlined clrscr::line_cols#0 = COLORRAM
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Alias gotoxy::line_offset#0 = gotoxy::$10
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Identical Phi Values memcpy::num#2 (unsigned int)$19*$28-$28
|
|
Identical Phi Values memset::num#2 $28
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
if() condition always false - eliminating [9] if($28<=0) goto memset::@1
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Finalized unsigned number type (char) 2
|
|
Finalized unsigned number type (char) 8
|
|
Finalized unsigned number type (char) $a
|
|
Finalized unsigned number type (char) $10
|
|
Finalized unsigned number type (char) $b
|
|
Finalized unsigned number type (char) $b
|
|
Finalized unsigned number type (char) $19
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $19
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $19
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) $19
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 1
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Simplifying constant integer cast $19-1
|
|
Successful SSA optimization PassNCastSimplification
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Alias candidate removed (volatile)conio_line_text = gotoxy::$5
|
|
Alias candidate removed (volatile)conio_line_color = gotoxy::$6
|
|
Added new block during phi lifting uctoa::@17(between uctoa::@16 and uctoa::@13)
|
|
Added new block during phi lifting gotoxy::@5(between gotoxy and gotoxy::@1)
|
|
Added new block during phi lifting conio_c64_init::@4(between conio_c64_init and conio_c64_init::@1)
|
|
Added new block during phi lifting printf_number_buffer::@26(between printf_number_buffer::@13 and printf_number_buffer::@1)
|
|
Added new block during phi lifting printf_number_buffer::@27(between printf_number_buffer::@15 and printf_number_buffer::@13)
|
|
Added new block during phi lifting main::@12(between main::@5 and main::@1)
|
|
Adding NOP phi() at start of __start
|
|
Adding NOP phi() at start of __start::@2
|
|
Adding NOP phi() at start of __start::@1
|
|
Adding NOP phi() at start of __start::@3
|
|
Adding NOP phi() at start of conio_c64_init::@2
|
|
Adding NOP phi() at start of conio_c64_init::@3
|
|
Adding NOP phi() at start of cputc::@3
|
|
Adding NOP phi() at start of cputc::@5
|
|
Adding NOP phi() at start of cputc::@1
|
|
Adding NOP phi() at start of cputc::@4
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::toD0181
|
|
Adding NOP phi() at start of main::toD0181_@return
|
|
Adding NOP phi() at start of main::@4
|
|
Adding NOP phi() at start of main::@9
|
|
Adding NOP phi() at start of gotoxy::@3
|
|
Adding NOP phi() at start of cputln::@1
|
|
Adding NOP phi() at start of clrscr
|
|
Adding NOP phi() at start of clrscr::@2
|
|
Adding NOP phi() at start of petscii_to_screencode::@12
|
|
Adding NOP phi() at start of printf_uchar
|
|
Adding NOP phi() at start of printf_uchar::@2
|
|
Adding NOP phi() at start of printf_uchar::@5
|
|
Adding NOP phi() at start of cscroll::@1
|
|
Adding NOP phi() at start of cscroll::@3
|
|
Adding NOP phi() at start of cscroll::@4
|
|
Adding NOP phi() at start of cscroll::@5
|
|
Adding NOP phi() at start of cscroll::@6
|
|
Adding NOP phi() at start of uctoa
|
|
Adding NOP phi() at start of uctoa::@6
|
|
Adding NOP phi() at start of uctoa::@2
|
|
Adding NOP phi() at start of printf_number_buffer
|
|
Adding NOP phi() at start of printf_number_buffer::@6
|
|
Adding NOP phi() at start of printf_number_buffer::@14
|
|
Adding NOP phi() at start of printf_number_buffer::@22
|
|
Adding NOP phi() at start of printf_number_buffer::@3
|
|
Adding NOP phi() at start of printf_number_buffer::@4
|
|
Adding NOP phi() at start of printf_number_buffer::@5
|
|
Adding NOP phi() at start of printf_number_buffer::@18
|
|
Adding NOP phi() at start of printf_number_buffer::@16
|
|
Adding NOP phi() at start of memcpy::@3
|
|
Adding NOP phi() at start of memset::@1
|
|
Adding NOP phi() at start of strlen
|
|
Adding NOP phi() at start of strlen::@3
|
|
Adding NOP phi() at start of printf_padding
|
|
CALL GRAPH
|
|
Calls in [__start] to conio_c64_init:5 main:8
|
|
Calls in [conio_c64_init] to gotoxy:16
|
|
Calls in [cputc] to cputln:27 cputln:31
|
|
Calls in [main] to clrscr:37 GETIN:40 petscii_to_screencode:46 printf_str:49 cputc:51 printf_str:53 printf_uchar:55 printf_str:57
|
|
Calls in [cputln] to cscroll:79
|
|
Calls in [printf_str] to null:134
|
|
Calls in [printf_uchar] to uctoa:141 printf_number_buffer:143
|
|
Calls in [cscroll] to memcpy:149 memcpy:151 memset:153 memset:155
|
|
Calls in [uctoa] to uctoa_append:185
|
|
Calls in [printf_number_buffer] to strlen:193 cputc:209 printf_str:214 printf_padding:218
|
|
Calls in [printf_padding] to cputc:268
|
|
|
|
Created 32 initial phi equivalence classes
|
|
Coalesced [19] conio_c64_init::line#3 = conio_c64_init::line#0
|
|
Not coalescing [58] main::current#4 = main::ch#0
|
|
Coalesced (already) [59] main::current#5 = main::current#2
|
|
Coalesced [74] gotoxy::y#7 = gotoxy::y#2
|
|
Coalesced [96] clrscr::l#7 = clrscr::l#1
|
|
Coalesced [97] clrscr::line_text#7 = clrscr::line_text#1
|
|
Coalesced [98] clrscr::line_cols#7 = clrscr::line_cols#1
|
|
Coalesced [102] clrscr::c#4 = clrscr::c#1
|
|
Coalesced [116] petscii_to_screencode::return#16 = petscii_to_screencode::return#6
|
|
Coalesced [118] petscii_to_screencode::return#15 = petscii_to_screencode::return#5
|
|
Coalesced [120] petscii_to_screencode::return#14 = petscii_to_screencode::return#4
|
|
Coalesced [122] petscii_to_screencode::return#13 = petscii_to_screencode::return#3
|
|
Coalesced [123] petscii_to_screencode::return#12 = petscii_to_screencode::petscii#0
|
|
Coalesced [125] petscii_to_screencode::return#11 = petscii_to_screencode::return#1
|
|
Coalesced [127] printf_str::s#8 = printf_str::s#6
|
|
Coalesced [136] printf_str::s#9 = printf_str::s#0
|
|
Coalesced [163] uctoa::value#17 = uctoa::value#1
|
|
Coalesced [173] uctoa::value#18 = uctoa::value#2
|
|
Coalesced [174] uctoa::started#6 = uctoa::started#2
|
|
Coalesced [175] uctoa::buffer#23 = uctoa::buffer#11
|
|
Coalesced [178] uctoa::digit#7 = uctoa::digit#1
|
|
Coalesced (already) [179] uctoa::value#16 = uctoa::value#6
|
|
Coalesced (already) [180] uctoa::started#5 = uctoa::started#4
|
|
Coalesced (already) [181] uctoa::buffer#22 = uctoa::buffer#14
|
|
Coalesced [189] uctoa::value#19 = uctoa::value#0
|
|
Coalesced [190] uctoa::buffer#24 = uctoa::buffer#4
|
|
Coalesced [199] printf_number_buffer::len#5 = printf_number_buffer::len#1
|
|
Coalesced [220] printf_number_buffer::padding#17 = printf_number_buffer::padding#1
|
|
Coalesced [221] printf_number_buffer::len#4 = printf_number_buffer::len#0
|
|
Coalesced [233] memcpy::src#5 = memcpy::src#1
|
|
Coalesced [234] memcpy::dst#5 = memcpy::dst#1
|
|
Coalesced [244] memset::dst#5 = memset::dst#1
|
|
Coalesced [245] uctoa_append::value#6 = uctoa_append::value#0
|
|
Coalesced [252] uctoa_append::value#7 = uctoa_append::value#1
|
|
Coalesced [253] uctoa_append::digit#5 = uctoa_append::digit#1
|
|
Coalesced [261] strlen::str#5 = strlen::str#0
|
|
Coalesced [262] strlen::len#5 = strlen::len#1
|
|
Coalesced [271] printf_padding::i#5 = printf_padding::i#1
|
|
Coalesced down to 29 phi equivalence classes
|
|
Culled Empty Block label __start::@2
|
|
Culled Empty Block label __start::@3
|
|
Culled Empty Block label conio_c64_init::@2
|
|
Culled Empty Block label conio_c64_init::@3
|
|
Culled Empty Block label cputc::@5
|
|
Culled Empty Block label cputc::@4
|
|
Culled Empty Block label main::toD0181_@return
|
|
Culled Empty Block label main::@4
|
|
Culled Empty Block label main::@12
|
|
Culled Empty Block label gotoxy::@3
|
|
Culled Empty Block label cputln::@1
|
|
Culled Empty Block label clrscr::@2
|
|
Culled Empty Block label petscii_to_screencode::@12
|
|
Culled Empty Block label petscii_to_screencode::@2
|
|
Culled Empty Block label printf_uchar::@2
|
|
Culled Empty Block label printf_uchar::@5
|
|
Culled Empty Block label cscroll::@1
|
|
Culled Empty Block label uctoa::@6
|
|
Culled Empty Block label uctoa::@2
|
|
Culled Empty Block label uctoa::@5
|
|
Culled Empty Block label uctoa::@17
|
|
Culled Empty Block label printf_number_buffer::@14
|
|
Culled Empty Block label printf_number_buffer::@22
|
|
Culled Empty Block label printf_number_buffer::@3
|
|
Culled Empty Block label printf_number_buffer::@4
|
|
Culled Empty Block label printf_number_buffer::@18
|
|
Culled Empty Block label printf_number_buffer::@16
|
|
Culled Empty Block label printf_number_buffer::@27
|
|
Culled Empty Block label memcpy::@3
|
|
Culled Empty Block label memset::@1
|
|
Culled Empty Block label strlen::@3
|
|
Renumbering block memset::@2 to memset::@1
|
|
Renumbering block memset::@3 to memset::@2
|
|
Renumbering block memset::@4 to memset::@3
|
|
Renumbering block uctoa::@10 to uctoa::@1
|
|
Renumbering block uctoa::@11 to uctoa::@2
|
|
Renumbering block uctoa::@12 to uctoa::@3
|
|
Renumbering block uctoa::@13 to uctoa::@4
|
|
Renumbering block uctoa::@14 to uctoa::@5
|
|
Renumbering block uctoa::@15 to uctoa::@6
|
|
Renumbering block uctoa::@16 to uctoa::@7
|
|
Renumbering block clrscr::@3 to clrscr::@2
|
|
Renumbering block clrscr::@4 to clrscr::@3
|
|
Renumbering block clrscr::@5 to clrscr::@4
|
|
Renumbering block clrscr::@6 to clrscr::@5
|
|
Renumbering block gotoxy::@5 to gotoxy::@3
|
|
Renumbering block cscroll::@3 to cscroll::@1
|
|
Renumbering block cscroll::@4 to cscroll::@2
|
|
Renumbering block cscroll::@5 to cscroll::@3
|
|
Renumbering block cscroll::@6 to cscroll::@4
|
|
Renumbering block cscroll::@7 to cscroll::@5
|
|
Renumbering block conio_c64_init::@4 to conio_c64_init::@2
|
|
Renumbering block printf_uchar::@3 to printf_uchar::@1
|
|
Renumbering block printf_uchar::@4 to printf_uchar::@2
|
|
Renumbering block printf_number_buffer::@5 to printf_number_buffer::@3
|
|
Renumbering block printf_number_buffer::@6 to printf_number_buffer::@4
|
|
Renumbering block printf_number_buffer::@7 to printf_number_buffer::@5
|
|
Renumbering block printf_number_buffer::@8 to printf_number_buffer::@6
|
|
Renumbering block printf_number_buffer::@9 to printf_number_buffer::@7
|
|
Renumbering block printf_number_buffer::@13 to printf_number_buffer::@8
|
|
Renumbering block printf_number_buffer::@15 to printf_number_buffer::@9
|
|
Renumbering block printf_number_buffer::@21 to printf_number_buffer::@10
|
|
Renumbering block printf_number_buffer::@26 to printf_number_buffer::@11
|
|
Renumbering block main::@5 to main::@4
|
|
Renumbering block main::@6 to main::@5
|
|
Renumbering block main::@7 to main::@6
|
|
Renumbering block main::@8 to main::@7
|
|
Renumbering block main::@9 to main::@8
|
|
Renumbering block main::@10 to main::@9
|
|
Renumbering block main::@11 to main::@10
|
|
Renumbering block petscii_to_screencode::@3 to petscii_to_screencode::@2
|
|
Renumbering block petscii_to_screencode::@4 to petscii_to_screencode::@3
|
|
Renumbering block petscii_to_screencode::@5 to petscii_to_screencode::@4
|
|
Renumbering block petscii_to_screencode::@6 to petscii_to_screencode::@5
|
|
Renumbering block petscii_to_screencode::@7 to petscii_to_screencode::@6
|
|
Renumbering block petscii_to_screencode::@8 to petscii_to_screencode::@7
|
|
Renumbering block petscii_to_screencode::@9 to petscii_to_screencode::@8
|
|
Renumbering block petscii_to_screencode::@10 to petscii_to_screencode::@9
|
|
Renumbering block petscii_to_screencode::@11 to petscii_to_screencode::@10
|
|
Adding NOP phi() at start of __start
|
|
Adding NOP phi() at start of __start::@1
|
|
Adding NOP phi() at start of conio_c64_init::@2
|
|
Adding NOP phi() at start of cputc::@3
|
|
Adding NOP phi() at start of cputc::@1
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::toD0181
|
|
Adding NOP phi() at start of main::@8
|
|
Adding NOP phi() at start of gotoxy::@3
|
|
Adding NOP phi() at start of clrscr
|
|
Adding NOP phi() at start of printf_uchar
|
|
Adding NOP phi() at start of cscroll::@1
|
|
Adding NOP phi() at start of cscroll::@2
|
|
Adding NOP phi() at start of cscroll::@3
|
|
Adding NOP phi() at start of cscroll::@4
|
|
Adding NOP phi() at start of uctoa
|
|
Adding NOP phi() at start of printf_number_buffer
|
|
Adding NOP phi() at start of printf_number_buffer::@4
|
|
Adding NOP phi() at start of printf_number_buffer::@11
|
|
Adding NOP phi() at start of printf_number_buffer::@3
|
|
Adding NOP phi() at start of uctoa_append
|
|
Adding NOP phi() at start of strlen
|
|
Adding NOP phi() at start of printf_padding
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
|
|
void __start()
|
|
__start: scope:[__start] from
|
|
[0] phi()
|
|
to:__start::__init1
|
|
__start::__init1: scope:[__start] from __start
|
|
[1] conio_cursor_x = 0
|
|
[2] conio_cursor_y = 0
|
|
[3] conio_line_text = DEFAULT_SCREEN
|
|
[4] conio_line_color = COLORRAM
|
|
[5] call conio_c64_init
|
|
to:__start::@1
|
|
__start::@1: scope:[__start] from __start::__init1
|
|
[6] phi()
|
|
[7] call main
|
|
to:__start::@return
|
|
__start::@return: scope:[__start] from __start::@1
|
|
[8] return
|
|
to:@return
|
|
|
|
void conio_c64_init()
|
|
conio_c64_init: scope:[conio_c64_init] from __start::__init1
|
|
[9] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
|
|
[10] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2
|
|
to:conio_c64_init::@1
|
|
conio_c64_init::@2: scope:[conio_c64_init] from conio_c64_init
|
|
[11] phi()
|
|
to:conio_c64_init::@1
|
|
conio_c64_init::@1: scope:[conio_c64_init] from conio_c64_init conio_c64_init::@2
|
|
[12] conio_c64_init::line#2 = phi( conio_c64_init::@2/conio_c64_init::line#0, conio_c64_init/$19-1 )
|
|
[13] gotoxy::y#2 = conio_c64_init::line#2
|
|
[14] call gotoxy
|
|
to:conio_c64_init::@return
|
|
conio_c64_init::@return: scope:[conio_c64_init] from conio_c64_init::@1
|
|
[15] return
|
|
to:@return
|
|
|
|
__stackcall void cputc(char c)
|
|
cputc: scope:[cputc] from printf_number_buffer::@7 printf_padding::@2
|
|
[16] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C)
|
|
[17] if(cputc::c#0=='
|
|
') goto cputc::@1
|
|
to:cputc::@2
|
|
cputc::@2: scope:[cputc] from cputc
|
|
[18] conio_line_text[conio_cursor_x] = cputc::c#0
|
|
[19] conio_line_color[conio_cursor_x] = LIGHT_BLUE
|
|
[20] conio_cursor_x = ++ conio_cursor_x
|
|
[21] if(conio_cursor_x!=$28) goto cputc::@return
|
|
to:cputc::@3
|
|
cputc::@3: scope:[cputc] from cputc::@2
|
|
[22] phi()
|
|
[23] call cputln
|
|
to:cputc::@return
|
|
cputc::@return: scope:[cputc] from cputc::@1 cputc::@2 cputc::@3
|
|
[24] return
|
|
to:@return
|
|
cputc::@1: scope:[cputc] from cputc
|
|
[25] phi()
|
|
[26] call cputln
|
|
to:cputc::@return
|
|
|
|
int main()
|
|
main: scope:[main] from __start::@1
|
|
[27] phi()
|
|
to:main::toD0181
|
|
main::toD0181: scope:[main] from main
|
|
[28] phi()
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::toD0181
|
|
[29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = main::toD0181_return#0
|
|
[30] call clrscr
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@10 main::@3 main::@4 main::@9
|
|
[31] main::current#2 = phi( main::@9/main::current#4, main::@3/0, main::@4/main::current#2 )
|
|
[32] call GETIN
|
|
[33] GETIN::return#0 = GETIN::return#1
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@1
|
|
[34] main::ch#0 = GETIN::return#0
|
|
[35] if(0==main::ch#0) goto main::@1
|
|
to:main::@10
|
|
main::@10: scope:[main] from main::@4
|
|
[36] if(main::ch#0!=main::current#2) goto main::@2
|
|
to:main::@1
|
|
main::@2: scope:[main] from main::@10
|
|
[37] petscii_to_screencode::petscii#0 = main::ch#0
|
|
[38] call petscii_to_screencode
|
|
[39] petscii_to_screencode::return#0 = petscii_to_screencode::return#10
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@2
|
|
[40] main::$6 = petscii_to_screencode::return#0
|
|
[41] call printf_str
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@5
|
|
[42] stackpush(char) = main::$6
|
|
[43] callexecute cputc
|
|
sideeffect stackpullpadding(1)
|
|
[45] call printf_str
|
|
to:main::@7
|
|
main::@7: scope:[main] from main::@6
|
|
[46] printf_uchar::uvalue#0 = main::ch#0
|
|
[47] call printf_uchar
|
|
to:main::@8
|
|
main::@8: scope:[main] from main::@7
|
|
[48] phi()
|
|
[49] call printf_str
|
|
to:main::@9
|
|
main::@9: scope:[main] from main::@8
|
|
[50] main::current#4 = main::ch#0
|
|
to:main::@1
|
|
|
|
void gotoxy(char x , char y)
|
|
gotoxy: scope:[gotoxy] from conio_c64_init::@1
|
|
[51] if(gotoxy::y#2<$19+1) goto gotoxy::@3
|
|
to:gotoxy::@1
|
|
gotoxy::@3: scope:[gotoxy] from gotoxy
|
|
[52] phi()
|
|
to:gotoxy::@1
|
|
gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@3
|
|
[53] gotoxy::y#4 = phi( gotoxy::@3/gotoxy::y#2, gotoxy/0 )
|
|
to:gotoxy::@2
|
|
gotoxy::@2: scope:[gotoxy] from gotoxy::@1
|
|
[54] conio_cursor_x = gotoxy::x#2
|
|
[55] conio_cursor_y = gotoxy::y#4
|
|
[56] gotoxy::$7 = (unsigned int)gotoxy::y#4
|
|
[57] gotoxy::$8 = gotoxy::$7 << 2
|
|
[58] gotoxy::$9 = gotoxy::$8 + gotoxy::$7
|
|
[59] gotoxy::line_offset#0 = gotoxy::$9 << 3
|
|
[60] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
|
|
[61] conio_line_text = gotoxy::$5
|
|
[62] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
|
|
[63] conio_line_color = gotoxy::$6
|
|
to:gotoxy::@return
|
|
gotoxy::@return: scope:[gotoxy] from gotoxy::@2
|
|
[64] return
|
|
to:@return
|
|
|
|
void cputln()
|
|
cputln: scope:[cputln] from cputc::@1 cputc::@3
|
|
[65] conio_line_text = conio_line_text + $28
|
|
[66] conio_line_color = conio_line_color + $28
|
|
[67] conio_cursor_x = 0
|
|
[68] conio_cursor_y = ++ conio_cursor_y
|
|
[69] call cscroll
|
|
to:cputln::@return
|
|
cputln::@return: scope:[cputln] from cputln
|
|
[70] return
|
|
to:@return
|
|
|
|
void clrscr()
|
|
clrscr: scope:[clrscr] from main::@3
|
|
[71] phi()
|
|
to:clrscr::@1
|
|
clrscr::@1: scope:[clrscr] from clrscr clrscr::@5
|
|
[72] clrscr::line_cols#5 = phi( clrscr/COLORRAM, clrscr::@5/clrscr::line_cols#1 )
|
|
[72] clrscr::line_text#5 = phi( clrscr/DEFAULT_SCREEN, clrscr::@5/clrscr::line_text#1 )
|
|
[72] clrscr::l#2 = phi( clrscr/0, clrscr::@5/clrscr::l#1 )
|
|
[73] if(clrscr::l#2<$19) goto clrscr::@3
|
|
to:clrscr::@2
|
|
clrscr::@2: scope:[clrscr] from clrscr::@1
|
|
[74] conio_cursor_x = 0
|
|
[75] conio_cursor_y = 0
|
|
[76] conio_line_text = DEFAULT_SCREEN
|
|
[77] conio_line_color = COLORRAM
|
|
to:clrscr::@return
|
|
clrscr::@return: scope:[clrscr] from clrscr::@2
|
|
[78] return
|
|
to:@return
|
|
clrscr::@3: scope:[clrscr] from clrscr::@1 clrscr::@4
|
|
[79] clrscr::c#2 = phi( clrscr::@1/0, clrscr::@4/clrscr::c#1 )
|
|
[80] if(clrscr::c#2<$28) goto clrscr::@4
|
|
to:clrscr::@5
|
|
clrscr::@5: scope:[clrscr] from clrscr::@3
|
|
[81] clrscr::line_text#1 = clrscr::line_text#5 + $28
|
|
[82] clrscr::line_cols#1 = clrscr::line_cols#5 + $28
|
|
[83] clrscr::l#1 = ++ clrscr::l#2
|
|
to:clrscr::@1
|
|
clrscr::@4: scope:[clrscr] from clrscr::@3
|
|
[84] clrscr::line_text#5[clrscr::c#2] = ' '
|
|
[85] clrscr::line_cols#5[clrscr::c#2] = LIGHT_BLUE
|
|
[86] clrscr::c#1 = ++ clrscr::c#2
|
|
to:clrscr::@3
|
|
|
|
char GETIN()
|
|
GETIN: scope:[GETIN] from main::@1
|
|
asm { jsr$ffe4 stach }
|
|
[88] GETIN::return#1 = *GETIN::ch
|
|
to:GETIN::@return
|
|
GETIN::@return: scope:[GETIN] from GETIN
|
|
[89] return
|
|
to:@return
|
|
|
|
char petscii_to_screencode(char petscii)
|
|
petscii_to_screencode: scope:[petscii_to_screencode] from main::@2
|
|
[90] if(petscii_to_screencode::petscii#0<$20) goto petscii_to_screencode::@1
|
|
to:petscii_to_screencode::@6
|
|
petscii_to_screencode::@6: scope:[petscii_to_screencode] from petscii_to_screencode
|
|
[91] if(petscii_to_screencode::petscii#0<$40) goto petscii_to_screencode::@return
|
|
to:petscii_to_screencode::@7
|
|
petscii_to_screencode::@7: scope:[petscii_to_screencode] from petscii_to_screencode::@6
|
|
[92] if(petscii_to_screencode::petscii#0<$60) goto petscii_to_screencode::@2
|
|
to:petscii_to_screencode::@8
|
|
petscii_to_screencode::@8: scope:[petscii_to_screencode] from petscii_to_screencode::@7
|
|
[93] if(petscii_to_screencode::petscii#0<$80) goto petscii_to_screencode::@3
|
|
to:petscii_to_screencode::@9
|
|
petscii_to_screencode::@9: scope:[petscii_to_screencode] from petscii_to_screencode::@8
|
|
[94] if(petscii_to_screencode::petscii#0<$a0) goto petscii_to_screencode::@4
|
|
to:petscii_to_screencode::@10
|
|
petscii_to_screencode::@10: scope:[petscii_to_screencode] from petscii_to_screencode::@9
|
|
[95] if(petscii_to_screencode::petscii#0<$ff) goto petscii_to_screencode::@5
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@5: scope:[petscii_to_screencode] from petscii_to_screencode::@10
|
|
[96] petscii_to_screencode::return#6 = petscii_to_screencode::petscii#0 - $80
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@return: scope:[petscii_to_screencode] from petscii_to_screencode::@1 petscii_to_screencode::@10 petscii_to_screencode::@2 petscii_to_screencode::@3 petscii_to_screencode::@4 petscii_to_screencode::@5 petscii_to_screencode::@6
|
|
[97] petscii_to_screencode::return#10 = phi( petscii_to_screencode::@1/petscii_to_screencode::return#1, petscii_to_screencode::@10/$5e, petscii_to_screencode::@6/petscii_to_screencode::petscii#0, petscii_to_screencode::@2/petscii_to_screencode::return#3, petscii_to_screencode::@3/petscii_to_screencode::return#4, petscii_to_screencode::@4/petscii_to_screencode::return#5, petscii_to_screencode::@5/petscii_to_screencode::return#6 )
|
|
[98] return
|
|
to:@return
|
|
petscii_to_screencode::@4: scope:[petscii_to_screencode] from petscii_to_screencode::@9
|
|
[99] petscii_to_screencode::return#5 = petscii_to_screencode::petscii#0 + $40
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@3: scope:[petscii_to_screencode] from petscii_to_screencode::@8
|
|
[100] petscii_to_screencode::return#4 = petscii_to_screencode::petscii#0 - $20
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@2: scope:[petscii_to_screencode] from petscii_to_screencode::@7
|
|
[101] petscii_to_screencode::return#3 = petscii_to_screencode::petscii#0 - $40
|
|
to:petscii_to_screencode::@return
|
|
petscii_to_screencode::@1: scope:[petscii_to_screencode] from petscii_to_screencode
|
|
[102] petscii_to_screencode::return#1 = petscii_to_screencode::petscii#0 + $80
|
|
to:petscii_to_screencode::@return
|
|
|
|
void printf_str(void (*putc)(char) , const char *s)
|
|
printf_str: scope:[printf_str] from main::@5 main::@6 main::@8 printf_number_buffer::@3
|
|
[103] printf_str::putc#6 = phi( main::@5/&cputc, main::@6/&cputc, main::@8/&cputc, printf_number_buffer::@3/printf_uchar::putc#0 )
|
|
[103] printf_str::s#6 = phi( main::@5/main::s, main::@6/main::s1, main::@8/main::s2, printf_number_buffer::@3/printf_number_buffer::buffer_digits#0 )
|
|
to:printf_str::@1
|
|
printf_str::@1: scope:[printf_str] from printf_str printf_str::@2
|
|
[104] printf_str::s#5 = phi( printf_str/printf_str::s#6, printf_str::@2/printf_str::s#0 )
|
|
[105] printf_str::c#1 = *printf_str::s#5
|
|
[106] printf_str::s#0 = ++ printf_str::s#5
|
|
[107] if(0!=printf_str::c#1) goto printf_str::@2
|
|
to:printf_str::@return
|
|
printf_str::@return: scope:[printf_str] from printf_str::@1
|
|
[108] return
|
|
to:@return
|
|
printf_str::@2: scope:[printf_str] from printf_str::@1
|
|
[109] stackpush(char) = printf_str::c#1
|
|
[110] callexecute *printf_str::putc#6
|
|
sideeffect stackpullpadding(1)
|
|
to:printf_str::@1
|
|
|
|
void printf_uchar(void (*putc)(char) , char uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
printf_uchar: scope:[printf_uchar] from main::@7
|
|
[112] phi()
|
|
to:printf_uchar::@1
|
|
printf_uchar::@1: scope:[printf_uchar] from printf_uchar
|
|
[113] *((char *)&printf_buffer) = 0
|
|
[114] uctoa::value#1 = printf_uchar::uvalue#0
|
|
[115] call uctoa
|
|
to:printf_uchar::@2
|
|
printf_uchar::@2: scope:[printf_uchar] from printf_uchar::@1
|
|
[116] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer)
|
|
[117] call printf_number_buffer
|
|
to:printf_uchar::@return
|
|
printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@2
|
|
[118] return
|
|
to:@return
|
|
|
|
void cscroll()
|
|
cscroll: scope:[cscroll] from cputln
|
|
[119] if(conio_cursor_y!=$19) goto cscroll::@return
|
|
to:cscroll::@1
|
|
cscroll::@1: scope:[cscroll] from cscroll
|
|
[120] phi()
|
|
[121] call memcpy
|
|
to:cscroll::@2
|
|
cscroll::@2: scope:[cscroll] from cscroll::@1
|
|
[122] phi()
|
|
[123] call memcpy
|
|
to:cscroll::@3
|
|
cscroll::@3: scope:[cscroll] from cscroll::@2
|
|
[124] phi()
|
|
[125] call memset
|
|
to:cscroll::@4
|
|
cscroll::@4: scope:[cscroll] from cscroll::@3
|
|
[126] phi()
|
|
[127] call memset
|
|
to:cscroll::@5
|
|
cscroll::@5: scope:[cscroll] from cscroll::@4
|
|
[128] conio_line_text = conio_line_text - $28
|
|
[129] conio_line_color = conio_line_color - $28
|
|
[130] conio_cursor_y = -- conio_cursor_y
|
|
to:cscroll::@return
|
|
cscroll::@return: scope:[cscroll] from cscroll cscroll::@5
|
|
[131] return
|
|
to:@return
|
|
|
|
void uctoa(char value , char *buffer , char radix)
|
|
uctoa: scope:[uctoa] from printf_uchar::@1
|
|
[132] phi()
|
|
to:uctoa::@1
|
|
uctoa::@1: scope:[uctoa] from uctoa uctoa::@4
|
|
[133] uctoa::buffer#11 = phi( uctoa::@4/uctoa::buffer#14, uctoa/(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
|
|
[133] uctoa::started#2 = phi( uctoa::@4/uctoa::started#4, uctoa/0 )
|
|
[133] uctoa::value#2 = phi( uctoa::@4/uctoa::value#6, uctoa/uctoa::value#1 )
|
|
[133] uctoa::digit#2 = phi( uctoa::@4/uctoa::digit#1, uctoa/0 )
|
|
[134] if(uctoa::digit#2<uctoa::max_digits#2-1) goto uctoa::@2
|
|
to:uctoa::@3
|
|
uctoa::@3: scope:[uctoa] from uctoa::@1
|
|
[135] *uctoa::buffer#11 = DIGITS[uctoa::value#2]
|
|
[136] uctoa::buffer#3 = ++ uctoa::buffer#11
|
|
[137] *uctoa::buffer#3 = 0
|
|
to:uctoa::@return
|
|
uctoa::@return: scope:[uctoa] from uctoa::@3
|
|
[138] return
|
|
to:@return
|
|
uctoa::@2: scope:[uctoa] from uctoa::@1
|
|
[139] uctoa::digit_value#0 = RADIX_HEXADECIMAL_VALUES_CHAR[uctoa::digit#2]
|
|
[140] if(0!=uctoa::started#2) goto uctoa::@5
|
|
to:uctoa::@7
|
|
uctoa::@7: scope:[uctoa] from uctoa::@2
|
|
[141] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5
|
|
to:uctoa::@4
|
|
uctoa::@4: scope:[uctoa] from uctoa::@6 uctoa::@7
|
|
[142] uctoa::buffer#14 = phi( uctoa::@7/uctoa::buffer#11, uctoa::@6/uctoa::buffer#4 )
|
|
[142] uctoa::started#4 = phi( uctoa::@7/uctoa::started#2, uctoa::@6/1 )
|
|
[142] uctoa::value#6 = phi( uctoa::@7/uctoa::value#2, uctoa::@6/uctoa::value#0 )
|
|
[143] uctoa::digit#1 = ++ uctoa::digit#2
|
|
to:uctoa::@1
|
|
uctoa::@5: scope:[uctoa] from uctoa::@2 uctoa::@7
|
|
[144] uctoa_append::buffer#0 = uctoa::buffer#11
|
|
[145] uctoa_append::value#0 = uctoa::value#2
|
|
[146] uctoa_append::sub#0 = uctoa::digit_value#0
|
|
[147] call uctoa_append
|
|
[148] uctoa_append::return#0 = uctoa_append::value#2
|
|
to:uctoa::@6
|
|
uctoa::@6: scope:[uctoa] from uctoa::@5
|
|
[149] uctoa::value#0 = uctoa_append::return#0
|
|
[150] uctoa::buffer#4 = ++ uctoa::buffer#11
|
|
to:uctoa::@4
|
|
|
|
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
printf_number_buffer: scope:[printf_number_buffer] from printf_uchar::@2
|
|
[151] phi()
|
|
to:printf_number_buffer::@4
|
|
printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer
|
|
[152] phi()
|
|
[153] call strlen
|
|
[154] strlen::return#2 = strlen::len#2
|
|
to:printf_number_buffer::@9
|
|
printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@4
|
|
[155] printf_number_buffer::$19 = strlen::return#2
|
|
[156] printf_number_buffer::len#0 = (signed char)printf_number_buffer::$19
|
|
[157] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@8
|
|
to:printf_number_buffer::@5
|
|
printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer::@9
|
|
[158] printf_number_buffer::len#1 = ++ printf_number_buffer::len#0
|
|
to:printf_number_buffer::@8
|
|
printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@5 printf_number_buffer::@9
|
|
[159] printf_number_buffer::len#2 = phi( printf_number_buffer::@9/printf_number_buffer::len#0, printf_number_buffer::@5/printf_number_buffer::len#1 )
|
|
[160] printf_number_buffer::padding#1 = (signed char)printf_uchar::format_min_length#0 - printf_number_buffer::len#2
|
|
[161] if(printf_number_buffer::padding#1>=0) goto printf_number_buffer::@11
|
|
to:printf_number_buffer::@1
|
|
printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@8
|
|
[162] phi()
|
|
to:printf_number_buffer::@1
|
|
printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer::@11 printf_number_buffer::@8
|
|
[163] printf_number_buffer::padding#10 = phi( printf_number_buffer::@11/printf_number_buffer::padding#1, printf_number_buffer::@8/0 )
|
|
to:printf_number_buffer::@10
|
|
printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@1
|
|
[164] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@6
|
|
to:printf_number_buffer::@2
|
|
printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer::@10
|
|
[165] printf_padding::length#0 = (char)printf_number_buffer::padding#10
|
|
[166] call printf_padding
|
|
to:printf_number_buffer::@2
|
|
printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@10 printf_number_buffer::@6
|
|
[167] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@3
|
|
to:printf_number_buffer::@7
|
|
printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@2
|
|
[168] stackpush(char) = printf_number_buffer::buffer_sign#0
|
|
[169] callexecute cputc
|
|
sideeffect stackpullpadding(1)
|
|
to:printf_number_buffer::@3
|
|
printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@2 printf_number_buffer::@7
|
|
[171] phi()
|
|
[172] call printf_str
|
|
to:printf_number_buffer::@return
|
|
printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@3
|
|
[173] return
|
|
to:@return
|
|
|
|
void * memcpy(void *destination , void *source , unsigned int num)
|
|
memcpy: scope:[memcpy] from cscroll::@1 cscroll::@2
|
|
[174] memcpy::destination#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN, cscroll::@2/(void *)COLORRAM )
|
|
[174] memcpy::source#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN+$28, cscroll::@2/(void *)COLORRAM+$28 )
|
|
[175] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28
|
|
[176] memcpy::src#4 = (char *)memcpy::source#2
|
|
[177] memcpy::dst#4 = (char *)memcpy::destination#2
|
|
to:memcpy::@1
|
|
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
|
|
[178] memcpy::dst#2 = phi( memcpy/memcpy::dst#4, memcpy::@2/memcpy::dst#1 )
|
|
[178] memcpy::src#2 = phi( memcpy/memcpy::src#4, memcpy::@2/memcpy::src#1 )
|
|
[179] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
|
|
to:memcpy::@return
|
|
memcpy::@return: scope:[memcpy] from memcpy::@1
|
|
[180] return
|
|
to:@return
|
|
memcpy::@2: scope:[memcpy] from memcpy::@1
|
|
[181] *memcpy::dst#2 = *memcpy::src#2
|
|
[182] memcpy::dst#1 = ++ memcpy::dst#2
|
|
[183] memcpy::src#1 = ++ memcpy::src#2
|
|
to:memcpy::@1
|
|
|
|
void * memset(void *str , char c , unsigned int num)
|
|
memset: scope:[memset] from cscroll::@3 cscroll::@4
|
|
[184] memset::c#4 = phi( cscroll::@3/' ', cscroll::@4/LIGHT_BLUE )
|
|
[184] memset::str#3 = phi( cscroll::@3/(void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28, cscroll::@4/(void *)COLORRAM+(unsigned int)$19*$28-$28 )
|
|
to:memset::@1
|
|
memset::@1: scope:[memset] from memset
|
|
[185] memset::end#0 = (char *)memset::str#3 + $28
|
|
[186] memset::dst#4 = (char *)memset::str#3
|
|
to:memset::@2
|
|
memset::@2: scope:[memset] from memset::@1 memset::@3
|
|
[187] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
|
|
[188] if(memset::dst#2!=memset::end#0) goto memset::@3
|
|
to:memset::@return
|
|
memset::@return: scope:[memset] from memset::@2
|
|
[189] return
|
|
to:@return
|
|
memset::@3: scope:[memset] from memset::@2
|
|
[190] *memset::dst#2 = memset::c#4
|
|
[191] memset::dst#1 = ++ memset::dst#2
|
|
to:memset::@2
|
|
|
|
char uctoa_append(char *buffer , char value , char sub)
|
|
uctoa_append: scope:[uctoa_append] from uctoa::@5
|
|
[192] phi()
|
|
to:uctoa_append::@1
|
|
uctoa_append::@1: scope:[uctoa_append] from uctoa_append uctoa_append::@2
|
|
[193] uctoa_append::digit#2 = phi( uctoa_append/0, uctoa_append::@2/uctoa_append::digit#1 )
|
|
[193] uctoa_append::value#2 = phi( uctoa_append/uctoa_append::value#0, uctoa_append::@2/uctoa_append::value#1 )
|
|
[194] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2
|
|
to:uctoa_append::@3
|
|
uctoa_append::@3: scope:[uctoa_append] from uctoa_append::@1
|
|
[195] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2]
|
|
to:uctoa_append::@return
|
|
uctoa_append::@return: scope:[uctoa_append] from uctoa_append::@3
|
|
[196] return
|
|
to:@return
|
|
uctoa_append::@2: scope:[uctoa_append] from uctoa_append::@1
|
|
[197] uctoa_append::digit#1 = ++ uctoa_append::digit#2
|
|
[198] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0
|
|
to:uctoa_append::@1
|
|
|
|
unsigned int strlen(char *str)
|
|
strlen: scope:[strlen] from printf_number_buffer::@4
|
|
[199] phi()
|
|
to:strlen::@1
|
|
strlen::@1: scope:[strlen] from strlen strlen::@2
|
|
[200] strlen::len#2 = phi( strlen/0, strlen::@2/strlen::len#1 )
|
|
[200] strlen::str#2 = phi( strlen/printf_number_buffer::buffer_digits#0, strlen::@2/strlen::str#0 )
|
|
[201] if(0!=*strlen::str#2) goto strlen::@2
|
|
to:strlen::@return
|
|
strlen::@return: scope:[strlen] from strlen::@1
|
|
[202] return
|
|
to:@return
|
|
strlen::@2: scope:[strlen] from strlen::@1
|
|
[203] strlen::len#1 = ++ strlen::len#2
|
|
[204] strlen::str#0 = ++ strlen::str#2
|
|
to:strlen::@1
|
|
|
|
void printf_padding(void (*putc)(char) , char pad , char length)
|
|
printf_padding: scope:[printf_padding] from printf_number_buffer::@6
|
|
[205] phi()
|
|
to:printf_padding::@1
|
|
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
|
|
[206] printf_padding::i#2 = phi( printf_padding/0, printf_padding::@3/printf_padding::i#1 )
|
|
[207] if(printf_padding::i#2<printf_padding::length#0) goto printf_padding::@2
|
|
to:printf_padding::@return
|
|
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
|
|
[208] return
|
|
to:@return
|
|
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
|
|
[209] stackpush(char) = printf_padding::pad#0
|
|
[210] callexecute cputc
|
|
sideeffect stackpullpadding(1)
|
|
to:printf_padding::@3
|
|
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
|
|
[212] printf_padding::i#1 = ++ printf_padding::i#2
|
|
to:printf_padding::@1
|
|
|
|
null depth in calling loop Loop head: main::@1 tails: main::@9 blocks: main::@9 main::@8 main::@7 main::@6 main::@5 main::@2 main::@10 main::@4 main::@1 in scope cputc
|
|
null depth in calling loop Loop head: main::@1 tails: main::@9 blocks: main::@9 main::@8 main::@7 main::@6 main::@5 main::@2 main::@10 main::@4 main::@1 in scope printf_uchar
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: main::@1 tails: main::@9 blocks: main::@9 main::@8 main::@7 main::@6 main::@5 main::@2 main::@10 main::@4 main::@1 in scope printf_uchar
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope cputc
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
char GETIN()
|
|
char GETIN::return
|
|
char GETIN::return#0 // 20002.0
|
|
char GETIN::return#1 // 36667.33333333333
|
|
void __start()
|
|
void clrscr()
|
|
char clrscr::c
|
|
char clrscr::c#1 // 20002.0
|
|
char clrscr::c#2 // 12501.25
|
|
char clrscr::l
|
|
char clrscr::l#1 // 2002.0
|
|
char clrscr::l#2 // 333.6666666666667
|
|
char *clrscr::line_cols
|
|
char *clrscr::line_cols#1 // 1001.0
|
|
char *clrscr::line_cols#5 // 1500.375
|
|
char *clrscr::line_text
|
|
char *clrscr::line_text#1 // 667.3333333333334
|
|
char *clrscr::line_text#5 // 1714.7142857142858
|
|
void conio_c64_init()
|
|
char conio_c64_init::line
|
|
char conio_c64_init::line#0 // 11.0
|
|
char conio_c64_init::line#2 // 22.0
|
|
__loadstore char conio_cursor_x // 1.9480522207792208E7
|
|
__loadstore char conio_cursor_y // 3.4408602375268817E8
|
|
__loadstore char *conio_line_color // 2.4285714515384617E8
|
|
__loadstore char *conio_line_text // 2.4021739357608694E8
|
|
__stackcall void cputc(char c)
|
|
char cputc::c
|
|
char cputc::c#0 // 1.500000015E8
|
|
void cputln()
|
|
void cscroll()
|
|
void gotoxy(char x , char y)
|
|
char *gotoxy::$5 // 202.0
|
|
char *gotoxy::$6 // 202.0
|
|
unsigned int gotoxy::$7 // 151.5
|
|
unsigned int gotoxy::$8 // 202.0
|
|
unsigned int gotoxy::$9 // 202.0
|
|
unsigned int gotoxy::line_offset
|
|
unsigned int gotoxy::line_offset#0 // 101.0
|
|
char gotoxy::x
|
|
char gotoxy::y
|
|
char gotoxy::y#2 // 71.0
|
|
char gotoxy::y#4 // 67.33333333333333
|
|
int main()
|
|
char main::$6 // 101.0
|
|
char main::ch
|
|
char main::ch#0 // 1331.625
|
|
char main::current
|
|
char main::current#2 // 4220.8
|
|
char main::current#4 // 202.0
|
|
int main::return
|
|
char *main::toD0181_gfx
|
|
char main::toD0181_return
|
|
char *main::toD0181_screen
|
|
void * memcpy(void *destination , void *source , unsigned int num)
|
|
void *memcpy::destination
|
|
void *memcpy::destination#2
|
|
char *memcpy::dst
|
|
char *memcpy::dst#1 // 1.0000000000001E13
|
|
char *memcpy::dst#2 // 1.0033333333334666E13
|
|
char *memcpy::dst#4 // 2.00000000002E11
|
|
unsigned int memcpy::num
|
|
void *memcpy::return
|
|
void *memcpy::source
|
|
void *memcpy::source#2
|
|
char *memcpy::src
|
|
char *memcpy::src#1 // 2.0000000000002E13
|
|
char *memcpy::src#2 // 1.002500000000125E13
|
|
char *memcpy::src#4 // 1.00000000001E11
|
|
char *memcpy::src_end
|
|
char *memcpy::src_end#0 // 1.26250000000025E12
|
|
void * memset(void *str , char c , unsigned int num)
|
|
char memset::c
|
|
char memset::c#4 // 1.4285714285715715E12
|
|
char *memset::dst
|
|
char *memset::dst#1 // 2.0000000000002E13
|
|
char *memset::dst#2 // 1.3366666666668332E13
|
|
char *memset::dst#4 // 2.00000000002E11
|
|
char *memset::end
|
|
char *memset::end#0 // 1.6833333333336665E12
|
|
unsigned int memset::num
|
|
void *memset::return
|
|
void *memset::str
|
|
void *memset::str#3
|
|
char petscii_to_screencode(char petscii)
|
|
char petscii_to_screencode::petscii
|
|
char petscii_to_screencode::petscii#0 // 1730.4285714285716
|
|
char petscii_to_screencode::return
|
|
char petscii_to_screencode::return#0 // 202.0
|
|
char petscii_to_screencode::return#1 // 2002.0
|
|
char petscii_to_screencode::return#10 // 2035.666666666667
|
|
char petscii_to_screencode::return#3 // 2002.0
|
|
char petscii_to_screencode::return#4 // 2002.0
|
|
char petscii_to_screencode::return#5 // 2002.0
|
|
char petscii_to_screencode::return#6 // 2002.0
|
|
__loadstore struct printf_buffer_number printf_buffer = {}
|
|
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
unsigned int printf_number_buffer::$19 // 10001.0
|
|
struct printf_buffer_number printf_number_buffer::buffer
|
|
char *printf_number_buffer::buffer_digits
|
|
char printf_number_buffer::buffer_sign
|
|
char printf_number_buffer::buffer_sign#0 // 1722.4444444444443
|
|
struct printf_format_number printf_number_buffer::format
|
|
char printf_number_buffer::format_justify_left
|
|
char printf_number_buffer::format_min_length
|
|
char printf_number_buffer::format_radix
|
|
char printf_number_buffer::format_sign_always
|
|
char printf_number_buffer::format_upper_case
|
|
char printf_number_buffer::format_zero_padding
|
|
signed char printf_number_buffer::len
|
|
signed char printf_number_buffer::len#0 // 15001.5
|
|
signed char printf_number_buffer::len#1 // 20002.0
|
|
signed char printf_number_buffer::len#2 // 30003.0
|
|
signed char printf_number_buffer::padding
|
|
signed char printf_number_buffer::padding#1 // 10001.0
|
|
signed char printf_number_buffer::padding#10 // 10001.0
|
|
void (*printf_number_buffer::putc)(char)
|
|
void printf_padding(void (*putc)(char) , char pad , char length)
|
|
char printf_padding::i
|
|
char printf_padding::i#1 // 2.0000002E7
|
|
char printf_padding::i#2 // 6000000.6
|
|
char printf_padding::length
|
|
char printf_padding::length#0 // 1251250.25
|
|
char printf_padding::pad
|
|
void (*printf_padding::putc)(char)
|
|
void printf_str(void (*putc)(char) , const char *s)
|
|
char printf_str::c
|
|
char printf_str::c#1 // 1.0000001E7
|
|
void (*printf_str::putc)(char)
|
|
void (*printf_str::putc#6)(char)
|
|
const char *printf_str::s
|
|
const char *printf_str::s#0 // 1.0000001E7
|
|
const char *printf_str::s#5 // 1.5050002E7
|
|
const char *printf_str::s#6 // 100001.0
|
|
void printf_uchar(void (*putc)(char) , char uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
struct printf_format_number printf_uchar::format
|
|
char printf_uchar::format_justify_left
|
|
char printf_uchar::format_min_length
|
|
char printf_uchar::format_radix
|
|
char printf_uchar::format_sign_always
|
|
char printf_uchar::format_upper_case
|
|
char printf_uchar::format_zero_padding
|
|
void (*printf_uchar::putc)(char)
|
|
char printf_uchar::uvalue
|
|
char printf_uchar::uvalue#0 // 367.33333333333337
|
|
unsigned int strlen(char *str)
|
|
unsigned int strlen::len
|
|
unsigned int strlen::len#1 // 1.0000001E7
|
|
unsigned int strlen::len#2 // 5002500.75
|
|
unsigned int strlen::return
|
|
unsigned int strlen::return#2 // 20002.0
|
|
char *strlen::str
|
|
char *strlen::str#0 // 2.0000002E7
|
|
char *strlen::str#2 // 1.0000001E7
|
|
void uctoa(char value , char *buffer , char radix)
|
|
char *uctoa::buffer
|
|
char *uctoa::buffer#11 // 335000.50000000006
|
|
char *uctoa::buffer#14 // 1500001.5
|
|
char *uctoa::buffer#3 // 20002.0
|
|
char *uctoa::buffer#4 // 2000002.0
|
|
char uctoa::digit
|
|
char uctoa::digit#1 // 2000002.0
|
|
char uctoa::digit#2 // 307692.6153846154
|
|
char uctoa::digit_value
|
|
char uctoa::digit_value#0 // 600000.6000000001
|
|
char *uctoa::digit_values
|
|
char uctoa::max_digits
|
|
char uctoa::radix
|
|
char uctoa::started
|
|
char uctoa::started#2 // 600000.6000000001
|
|
char uctoa::started#4 // 1000001.0
|
|
char uctoa::value
|
|
char uctoa::value#0 // 1000001.0
|
|
char uctoa::value#1 // 5501.0
|
|
char uctoa::value#2 // 670001.0000000001
|
|
char uctoa::value#6 // 1500001.5
|
|
char uctoa_append(char *buffer , char value , char sub)
|
|
char *uctoa_append::buffer
|
|
char *uctoa_append::buffer#0 // 1375000.25
|
|
char uctoa_append::digit
|
|
char uctoa_append::digit#1 // 1.0000000001E10
|
|
char uctoa_append::digit#2 // 1.00050000015E10
|
|
char uctoa_append::return
|
|
char uctoa_append::return#0 // 2000002.0
|
|
char uctoa_append::sub
|
|
char uctoa_append::sub#0 // 3.3335000005E9
|
|
char uctoa_append::value
|
|
char uctoa_append::value#0 // 3666667.333333333
|
|
char uctoa_append::value#1 // 2.0000000002E10
|
|
char uctoa_append::value#2 // 5.001833334166666E9
|
|
|
|
Initial phi equivalence classes
|
|
[ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
|
[ main::current#2 main::current#4 ]
|
|
[ gotoxy::y#4 gotoxy::y#2 ]
|
|
[ clrscr::l#2 clrscr::l#1 ]
|
|
[ clrscr::line_text#5 clrscr::line_text#1 ]
|
|
[ clrscr::line_cols#5 clrscr::line_cols#1 ]
|
|
[ clrscr::c#2 clrscr::c#1 ]
|
|
[ petscii_to_screencode::return#10 petscii_to_screencode::return#1 petscii_to_screencode::petscii#0 petscii_to_screencode::return#3 petscii_to_screencode::return#4 petscii_to_screencode::return#5 petscii_to_screencode::return#6 ]
|
|
[ printf_str::putc#6 ]
|
|
[ printf_str::s#5 printf_str::s#6 printf_str::s#0 ]
|
|
[ uctoa::digit#2 uctoa::digit#1 ]
|
|
[ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
|
|
[ uctoa::started#2 uctoa::started#4 ]
|
|
[ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ]
|
|
[ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
|
|
[ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
|
|
[ memcpy::source#2 ]
|
|
[ memcpy::destination#2 ]
|
|
[ memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
|
[ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
|
[ memset::str#3 ]
|
|
[ memset::c#4 ]
|
|
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
|
[ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
|
|
[ uctoa_append::digit#2 uctoa_append::digit#1 ]
|
|
[ strlen::str#2 strlen::str#0 ]
|
|
[ strlen::len#2 strlen::len#1 ]
|
|
[ printf_padding::i#2 printf_padding::i#1 ]
|
|
Added variable conio_cursor_x to live range equivalence class [ conio_cursor_x ]
|
|
Added variable conio_cursor_y to live range equivalence class [ conio_cursor_y ]
|
|
Added variable conio_line_text to live range equivalence class [ conio_line_text ]
|
|
Added variable conio_line_color to live range equivalence class [ conio_line_color ]
|
|
Added variable cputc::c#0 to live range equivalence class [ cputc::c#0 ]
|
|
Added variable GETIN::return#0 to live range equivalence class [ GETIN::return#0 ]
|
|
Added variable main::ch#0 to live range equivalence class [ main::ch#0 ]
|
|
Added variable petscii_to_screencode::return#0 to live range equivalence class [ petscii_to_screencode::return#0 ]
|
|
Added variable main::$6 to live range equivalence class [ main::$6 ]
|
|
Added variable printf_uchar::uvalue#0 to live range equivalence class [ printf_uchar::uvalue#0 ]
|
|
Added variable gotoxy::$7 to live range equivalence class [ gotoxy::$7 ]
|
|
Added variable gotoxy::$8 to live range equivalence class [ gotoxy::$8 ]
|
|
Added variable gotoxy::$9 to live range equivalence class [ gotoxy::$9 ]
|
|
Added variable gotoxy::line_offset#0 to live range equivalence class [ gotoxy::line_offset#0 ]
|
|
Added variable gotoxy::$5 to live range equivalence class [ gotoxy::$5 ]
|
|
Added variable gotoxy::$6 to live range equivalence class [ gotoxy::$6 ]
|
|
Added variable GETIN::return#1 to live range equivalence class [ GETIN::return#1 ]
|
|
Added variable printf_str::c#1 to live range equivalence class [ printf_str::c#1 ]
|
|
Added variable printf_number_buffer::buffer_sign#0 to live range equivalence class [ printf_number_buffer::buffer_sign#0 ]
|
|
Added variable uctoa::buffer#3 to live range equivalence class [ uctoa::buffer#3 ]
|
|
Added variable uctoa::digit_value#0 to live range equivalence class [ uctoa::digit_value#0 ]
|
|
Added variable uctoa_append::buffer#0 to live range equivalence class [ uctoa_append::buffer#0 ]
|
|
Added variable uctoa_append::sub#0 to live range equivalence class [ uctoa_append::sub#0 ]
|
|
Added variable uctoa_append::return#0 to live range equivalence class [ uctoa_append::return#0 ]
|
|
Added variable strlen::return#2 to live range equivalence class [ strlen::return#2 ]
|
|
Added variable printf_number_buffer::$19 to live range equivalence class [ printf_number_buffer::$19 ]
|
|
Added variable printf_padding::length#0 to live range equivalence class [ printf_padding::length#0 ]
|
|
Added variable memcpy::src_end#0 to live range equivalence class [ memcpy::src_end#0 ]
|
|
Added variable memset::end#0 to live range equivalence class [ memset::end#0 ]
|
|
Added variable printf_buffer to live range equivalence class [ printf_buffer ]
|
|
Complete equivalence classes
|
|
[ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
|
[ main::current#2 main::current#4 ]
|
|
[ gotoxy::y#4 gotoxy::y#2 ]
|
|
[ clrscr::l#2 clrscr::l#1 ]
|
|
[ clrscr::line_text#5 clrscr::line_text#1 ]
|
|
[ clrscr::line_cols#5 clrscr::line_cols#1 ]
|
|
[ clrscr::c#2 clrscr::c#1 ]
|
|
[ petscii_to_screencode::return#10 petscii_to_screencode::return#1 petscii_to_screencode::petscii#0 petscii_to_screencode::return#3 petscii_to_screencode::return#4 petscii_to_screencode::return#5 petscii_to_screencode::return#6 ]
|
|
[ printf_str::putc#6 ]
|
|
[ printf_str::s#5 printf_str::s#6 printf_str::s#0 ]
|
|
[ uctoa::digit#2 uctoa::digit#1 ]
|
|
[ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
|
|
[ uctoa::started#2 uctoa::started#4 ]
|
|
[ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ]
|
|
[ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
|
|
[ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
|
|
[ memcpy::source#2 ]
|
|
[ memcpy::destination#2 ]
|
|
[ memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
|
[ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
|
[ memset::str#3 ]
|
|
[ memset::c#4 ]
|
|
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
|
[ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
|
|
[ uctoa_append::digit#2 uctoa_append::digit#1 ]
|
|
[ strlen::str#2 strlen::str#0 ]
|
|
[ strlen::len#2 strlen::len#1 ]
|
|
[ printf_padding::i#2 printf_padding::i#1 ]
|
|
[ conio_cursor_x ]
|
|
[ conio_cursor_y ]
|
|
[ conio_line_text ]
|
|
[ conio_line_color ]
|
|
[ cputc::c#0 ]
|
|
[ GETIN::return#0 ]
|
|
[ main::ch#0 ]
|
|
[ petscii_to_screencode::return#0 ]
|
|
[ main::$6 ]
|
|
[ printf_uchar::uvalue#0 ]
|
|
[ gotoxy::$7 ]
|
|
[ gotoxy::$8 ]
|
|
[ gotoxy::$9 ]
|
|
[ gotoxy::line_offset#0 ]
|
|
[ gotoxy::$5 ]
|
|
[ gotoxy::$6 ]
|
|
[ GETIN::return#1 ]
|
|
[ printf_str::c#1 ]
|
|
[ printf_number_buffer::buffer_sign#0 ]
|
|
[ uctoa::buffer#3 ]
|
|
[ uctoa::digit_value#0 ]
|
|
[ uctoa_append::buffer#0 ]
|
|
[ uctoa_append::sub#0 ]
|
|
[ uctoa_append::return#0 ]
|
|
[ strlen::return#2 ]
|
|
[ printf_number_buffer::$19 ]
|
|
[ printf_padding::length#0 ]
|
|
[ memcpy::src_end#0 ]
|
|
[ memset::end#0 ]
|
|
[ printf_buffer ]
|
|
Allocated zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
|
Allocated zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
|
Allocated zp[2]:6 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
|
Allocated zp[2]:8 [ memset::end#0 ]
|
|
Allocated zp[1]:10 [ memset::c#4 ]
|
|
Allocated zp[2]:11 [ memcpy::src_end#0 ]
|
|
Allocated zp[1]:13 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
|
|
Allocated zp[1]:14 [ uctoa_append::digit#2 uctoa_append::digit#1 ]
|
|
Allocated zp[1]:15 [ uctoa_append::sub#0 ]
|
|
Allocated zp[1]:16 [ conio_cursor_y ]
|
|
Allocated zp[2]:17 [ conio_line_color ]
|
|
Allocated zp[2]:19 [ conio_line_text ]
|
|
Allocated zp[1]:21 [ cputc::c#0 ]
|
|
Allocated zp[2]:22 [ strlen::str#2 strlen::str#0 ]
|
|
Allocated zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ]
|
|
Allocated zp[2]:25 [ printf_str::s#5 printf_str::s#6 printf_str::s#0 ]
|
|
Allocated zp[1]:27 [ conio_cursor_x ]
|
|
Allocated zp[2]:28 [ strlen::len#2 strlen::len#1 ]
|
|
Allocated zp[1]:30 [ printf_str::c#1 ]
|
|
Allocated zp[2]:31 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ]
|
|
Allocated zp[1]:33 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
|
|
Allocated zp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ]
|
|
Allocated zp[1]:35 [ uctoa_append::return#0 ]
|
|
Allocated zp[1]:36 [ uctoa::started#2 uctoa::started#4 ]
|
|
Allocated zp[2]:37 [ uctoa_append::buffer#0 ]
|
|
Allocated zp[1]:39 [ printf_padding::length#0 ]
|
|
Allocated zp[1]:40 [ uctoa::digit_value#0 ]
|
|
Allocated zp[1]:41 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
|
|
Allocated zp[1]:42 [ GETIN::return#1 ]
|
|
Allocated zp[1]:43 [ clrscr::c#2 clrscr::c#1 ]
|
|
Allocated zp[1]:44 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
|
|
Allocated zp[1]:45 [ GETIN::return#0 ]
|
|
Allocated zp[2]:46 [ uctoa::buffer#3 ]
|
|
Allocated zp[2]:48 [ strlen::return#2 ]
|
|
Allocated zp[1]:50 [ petscii_to_screencode::return#10 petscii_to_screencode::return#1 petscii_to_screencode::petscii#0 petscii_to_screencode::return#3 petscii_to_screencode::return#4 petscii_to_screencode::return#5 petscii_to_screencode::return#6 ]
|
|
Allocated zp[2]:51 [ printf_number_buffer::$19 ]
|
|
Allocated zp[1]:53 [ main::current#2 main::current#4 ]
|
|
Allocated zp[2]:54 [ clrscr::line_cols#5 clrscr::line_cols#1 ]
|
|
Allocated zp[2]:56 [ clrscr::line_text#5 clrscr::line_text#1 ]
|
|
Allocated zp[1]:58 [ clrscr::l#2 clrscr::l#1 ]
|
|
Allocated zp[1]:59 [ printf_number_buffer::buffer_sign#0 ]
|
|
Allocated zp[1]:60 [ main::ch#0 ]
|
|
Allocated zp[1]:61 [ printf_uchar::uvalue#0 ]
|
|
Allocated zp[1]:62 [ petscii_to_screencode::return#0 ]
|
|
Allocated zp[2]:63 [ gotoxy::$8 ]
|
|
Allocated zp[2]:65 [ gotoxy::$9 ]
|
|
Allocated zp[2]:67 [ gotoxy::$5 ]
|
|
Allocated zp[2]:69 [ gotoxy::$6 ]
|
|
Allocated zp[2]:71 [ gotoxy::$7 ]
|
|
Allocated zp[1]:73 [ gotoxy::y#4 gotoxy::y#2 ]
|
|
Allocated zp[1]:74 [ main::$6 ]
|
|
Allocated zp[2]:75 [ gotoxy::line_offset#0 ]
|
|
Allocated zp[1]:77 [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
|
Allocated zp[2]:78 [ printf_str::putc#6 ]
|
|
Allocated zp[2]:80 [ memcpy::source#2 ]
|
|
Allocated zp[2]:82 [ memcpy::destination#2 ]
|
|
Allocated zp[2]:84 [ memset::str#3 ]
|
|
Allocated mem[12] [ printf_buffer ]
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Statement [1] conio_cursor_x = 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [2] conio_cursor_y = 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [3] conio_line_text = DEFAULT_SCREEN [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [4] conio_line_color = COLORRAM [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [16] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { } main:7::cputc:43 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte x
|
|
Removing always clobbered register reg byte a as potential for zp[1]:60 [ main::ch#0 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:60 [ main::ch#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:59 [ printf_number_buffer::buffer_sign#0 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:59 [ printf_number_buffer::buffer_sign#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:39 [ printf_padding::length#0 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:39 [ printf_padding::length#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ]
|
|
Statement [18] conio_line_text[conio_cursor_x] = cputc::c#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:60 [ main::ch#0 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:59 [ printf_number_buffer::buffer_sign#0 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:39 [ printf_padding::length#0 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ]
|
|
Statement [19] conio_line_color[conio_cursor_x] = LIGHT_BLUE [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte y
|
|
Statement [21] if(conio_cursor_x!=$28) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = main::toD0181_return#0 [ printf_buffer ] ( main:7 [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [35] if(0==main::ch#0) goto main::@1 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::current#2 main::ch#0 printf_buffer ] ( main:7 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::current#2 main::ch#0 printf_buffer ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:53 [ main::current#2 main::current#4 ]
|
|
Statement sideeffect stackpullpadding(1) always clobbers reg byte a
|
|
Statement [54] conio_cursor_x = gotoxy::x#2 [ gotoxy::y#4 ] ( gotoxy:14 [ gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:73 [ gotoxy::y#4 gotoxy::y#2 ]
|
|
Statement [56] gotoxy::$7 = (unsigned int)gotoxy::y#4 [ gotoxy::$7 ] ( gotoxy:14 [ gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [57] gotoxy::$8 = gotoxy::$7 << 2 [ gotoxy::$7 gotoxy::$8 ] ( gotoxy:14 [ gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [58] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 [ gotoxy::$9 ] ( gotoxy:14 [ gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [59] gotoxy::line_offset#0 = gotoxy::$9 << 3 [ gotoxy::line_offset#0 ] ( gotoxy:14 [ gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [60] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 [ gotoxy::line_offset#0 gotoxy::$5 ] ( gotoxy:14 [ gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [61] conio_line_text = gotoxy::$5 [ gotoxy::line_offset#0 ] ( gotoxy:14 [ gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [62] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 [ gotoxy::$6 ] ( gotoxy:14 [ gotoxy::$6 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$6 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [63] conio_line_color = gotoxy::$6 [ ] ( gotoxy:14 [ ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [65] conio_line_text = conio_line_text + $28 [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23 [ conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26 [ conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [66] conio_line_color = conio_line_color + $28 [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23 [ conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26 [ conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [67] conio_cursor_x = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( cputln:23 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [74] conio_cursor_x = 0 [ conio_cursor_x ] ( main:7::clrscr:30 [ printf_buffer conio_cursor_x ] { } ) always clobbers reg byte a
|
|
Statement [75] conio_cursor_y = 0 [ conio_cursor_x conio_cursor_y ] ( main:7::clrscr:30 [ printf_buffer conio_cursor_x conio_cursor_y ] { } ) always clobbers reg byte a
|
|
Statement [76] conio_line_text = DEFAULT_SCREEN [ conio_cursor_x conio_cursor_y conio_line_text ] ( main:7::clrscr:30 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text ] { } ) always clobbers reg byte a
|
|
Statement [77] conio_line_color = COLORRAM [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( main:7::clrscr:30 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } ) always clobbers reg byte a
|
|
Statement [81] clrscr::line_text#1 = clrscr::line_text#5 + $28 [ clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] ( main:7::clrscr:30 [ printf_buffer clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:58 [ clrscr::l#2 clrscr::l#1 ]
|
|
Statement [82] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 [ clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] ( main:7::clrscr:30 [ printf_buffer clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] { } ) always clobbers reg byte a
|
|
Statement [84] clrscr::line_text#5[clrscr::c#2] = ' ' [ clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:7::clrscr:30 [ printf_buffer clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:43 [ clrscr::c#2 clrscr::c#1 ]
|
|
Statement [85] clrscr::line_cols#5[clrscr::c#2] = LIGHT_BLUE [ clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:7::clrscr:30 [ printf_buffer clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { } ) always clobbers reg byte a
|
|
Statement asm { jsr$ffe4 stach } always clobbers reg byte a reg byte x reg byte y
|
|
Removing always clobbered register reg byte x as potential for zp[1]:53 [ main::current#2 main::current#4 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:53 [ main::current#2 main::current#4 ]
|
|
Statement [96] petscii_to_screencode::return#6 = petscii_to_screencode::petscii#0 - $80 [ petscii_to_screencode::return#6 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#6 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [99] petscii_to_screencode::return#5 = petscii_to_screencode::petscii#0 + $40 [ petscii_to_screencode::return#5 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#5 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [100] petscii_to_screencode::return#4 = petscii_to_screencode::petscii#0 - $20 [ petscii_to_screencode::return#4 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#4 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [101] petscii_to_screencode::return#3 = petscii_to_screencode::petscii#0 - $40 [ petscii_to_screencode::return#3 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#3 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [102] petscii_to_screencode::return#1 = petscii_to_screencode::petscii#0 + $80 [ petscii_to_screencode::return#1 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#1 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [105] printf_str::c#1 = *printf_str::s#5 [ printf_str::s#5 printf_str::c#1 ] ( main:7::printf_str:41 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 main::$6 printf_buffer printf_str::s#5 printf_str::c#1 ] { } main:7::printf_str:45 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer printf_str::s#5 printf_str::c#1 ] { } main:7::printf_str:49 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer printf_str::s#5 printf_str::c#1 ] { } main:7::printf_uchar:47::printf_number_buffer:117::printf_str:172 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_str::s#5 printf_str::c#1 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte a as potential for zp[1]:74 [ main::$6 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:74 [ main::$6 ]
|
|
Statement [110] callexecute *printf_str::putc#6 [ printf_str::s#0 ] ( main:7::printf_str:41 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 main::$6 printf_buffer printf_str::s#0 ] { } main:7::printf_str:45 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer printf_str::s#0 ] { } main:7::printf_str:49 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer printf_str::s#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::printf_str:172 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_str::s#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte x reg byte y
|
|
Removing always clobbered register reg byte x as potential for zp[1]:74 [ main::$6 ]
|
|
Statement sideeffect stackpullpadding(1) always clobbers reg byte a
|
|
Statement [113] *((char *)&printf_buffer) = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_uchar::uvalue#0 printf_buffer ] ( main:7::printf_uchar:47 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_uchar::uvalue#0 printf_buffer ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:61 [ printf_uchar::uvalue#0 ]
|
|
Statement [116] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer) [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::buffer_sign#0 ] ( main:7::printf_uchar:47 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::buffer_sign#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [119] if(conio_cursor_y!=$19) goto cscroll::@return [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [128] conio_line_text = conio_line_text - $28 [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [129] conio_line_color = conio_line_color - $28 [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2] [ printf_buffer uctoa::buffer#11 ] ( main:7::printf_uchar:47::uctoa:115 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } } ) always clobbers reg byte a reg byte y
|
|
Statement [136] uctoa::buffer#3 = ++ uctoa::buffer#11 [ printf_buffer uctoa::buffer#3 ] ( main:7::printf_uchar:47::uctoa:115 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } } ) always clobbers reg byte a
|
|
Statement [137] *uctoa::buffer#3 = 0 [ printf_buffer ] ( main:7::printf_uchar:47::uctoa:115 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } } ) always clobbers reg byte a reg byte y
|
|
Statement [144] uctoa_append::buffer#0 = uctoa::buffer#11 [ printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( main:7::printf_uchar:47::uctoa:115 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:33 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:40 [ uctoa::digit_value#0 ]
|
|
Statement [154] strlen::return#2 = strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 strlen::return#2 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 strlen::return#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
|
|
Statement [155] printf_number_buffer::$19 = strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::$19 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [157] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::len#0 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:41 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
|
|
Statement [160] printf_number_buffer::padding#1 = (signed char)printf_uchar::format_min_length#0 - printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::padding#1 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [167] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@3 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [168] stackpush(char) = printf_number_buffer::buffer_sign#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement sideeffect stackpullpadding(1) always clobbers reg byte a
|
|
Statement [175] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [176] memcpy::src#4 = (char *)memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [177] memcpy::dst#4 = (char *)memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [179] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [181] *memcpy::dst#2 = *memcpy::src#2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte y
|
|
Statement [185] memset::end#0 = (char *)memset::str#3 + $28 [ memset::str#3 memset::c#4 memset::end#0 ] ( cputln:23::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:10 [ memset::c#4 ]
|
|
Statement [186] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( cputln:23::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [188] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:23::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [190] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:23::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:10 [ memset::c#4 ]
|
|
Statement [195] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2] [ uctoa_append::value#2 ] ( main:7::printf_uchar:47::uctoa:115::uctoa_append:147 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:13 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:13 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
|
|
Statement [198] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( main:7::printf_uchar:47::uctoa:115::uctoa_append:147 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:15 [ uctoa_append::sub#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:14 [ uctoa_append::digit#2 uctoa_append::digit#1 ]
|
|
Statement [201] if(0!=*strlen::str#2) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:7::printf_uchar:47::printf_number_buffer:117::strlen:153 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y
|
|
Statement [207] if(printf_padding::i#2<printf_padding::length#0) goto printf_padding::@2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_padding::length#0 printf_padding::i#2 ] ( main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_padding::length#0 printf_padding::i#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [209] stackpush(char) = printf_padding::pad#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_padding::length#0 printf_padding::i#2 ] ( main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_padding::length#0 printf_padding::i#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement sideeffect stackpullpadding(1) always clobbers reg byte a
|
|
Statement [1] conio_cursor_x = 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [2] conio_cursor_y = 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [3] conio_line_text = DEFAULT_SCREEN [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [4] conio_line_color = COLORRAM [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [16] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { } main:7::cputc:43 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte x
|
|
Statement [18] conio_line_text[conio_cursor_x] = cputc::c#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte y
|
|
Statement [19] conio_line_color[conio_cursor_x] = LIGHT_BLUE [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte y
|
|
Statement [21] if(conio_cursor_x!=$28) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = main::toD0181_return#0 [ printf_buffer ] ( main:7 [ printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [35] if(0==main::ch#0) goto main::@1 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::current#2 main::ch#0 printf_buffer ] ( main:7 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::current#2 main::ch#0 printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [36] if(main::ch#0!=main::current#2) goto main::@2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer ] ( main:7 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [42] stackpush(char) = main::$6 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer ] ( main:7 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement sideeffect stackpullpadding(1) always clobbers reg byte a
|
|
Statement [50] main::current#4 = main::ch#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::current#4 printf_buffer ] ( main:7 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::current#4 printf_buffer ] { } ) always clobbers reg byte a
|
|
Statement [54] conio_cursor_x = gotoxy::x#2 [ gotoxy::y#4 ] ( gotoxy:14 [ gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [56] gotoxy::$7 = (unsigned int)gotoxy::y#4 [ gotoxy::$7 ] ( gotoxy:14 [ gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [57] gotoxy::$8 = gotoxy::$7 << 2 [ gotoxy::$7 gotoxy::$8 ] ( gotoxy:14 [ gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [58] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 [ gotoxy::$9 ] ( gotoxy:14 [ gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [59] gotoxy::line_offset#0 = gotoxy::$9 << 3 [ gotoxy::line_offset#0 ] ( gotoxy:14 [ gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [60] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 [ gotoxy::line_offset#0 gotoxy::$5 ] ( gotoxy:14 [ gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [61] conio_line_text = gotoxy::$5 [ gotoxy::line_offset#0 ] ( gotoxy:14 [ gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [62] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 [ gotoxy::$6 ] ( gotoxy:14 [ gotoxy::$6 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$6 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [63] conio_line_color = gotoxy::$6 [ ] ( gotoxy:14 [ ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
|
Statement [65] conio_line_text = conio_line_text + $28 [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23 [ conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26 [ conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [66] conio_line_color = conio_line_color + $28 [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23 [ conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26 [ conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26 [ main::ch#0 printf_buffer conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [67] conio_cursor_x = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( cputln:23 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [74] conio_cursor_x = 0 [ conio_cursor_x ] ( main:7::clrscr:30 [ printf_buffer conio_cursor_x ] { } ) always clobbers reg byte a
|
|
Statement [75] conio_cursor_y = 0 [ conio_cursor_x conio_cursor_y ] ( main:7::clrscr:30 [ printf_buffer conio_cursor_x conio_cursor_y ] { } ) always clobbers reg byte a
|
|
Statement [76] conio_line_text = DEFAULT_SCREEN [ conio_cursor_x conio_cursor_y conio_line_text ] ( main:7::clrscr:30 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text ] { } ) always clobbers reg byte a
|
|
Statement [77] conio_line_color = COLORRAM [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( main:7::clrscr:30 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } ) always clobbers reg byte a
|
|
Statement [81] clrscr::line_text#1 = clrscr::line_text#5 + $28 [ clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] ( main:7::clrscr:30 [ printf_buffer clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] { } ) always clobbers reg byte a
|
|
Statement [82] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 [ clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] ( main:7::clrscr:30 [ printf_buffer clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] { } ) always clobbers reg byte a
|
|
Statement [84] clrscr::line_text#5[clrscr::c#2] = ' ' [ clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:7::clrscr:30 [ printf_buffer clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { } ) always clobbers reg byte a
|
|
Statement [85] clrscr::line_cols#5[clrscr::c#2] = LIGHT_BLUE [ clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:7::clrscr:30 [ printf_buffer clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { } ) always clobbers reg byte a
|
|
Statement asm { jsr$ffe4 stach } always clobbers reg byte a reg byte x reg byte y
|
|
Statement [96] petscii_to_screencode::return#6 = petscii_to_screencode::petscii#0 - $80 [ petscii_to_screencode::return#6 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#6 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [99] petscii_to_screencode::return#5 = petscii_to_screencode::petscii#0 + $40 [ petscii_to_screencode::return#5 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#5 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [100] petscii_to_screencode::return#4 = petscii_to_screencode::petscii#0 - $20 [ petscii_to_screencode::return#4 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#4 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [101] petscii_to_screencode::return#3 = petscii_to_screencode::petscii#0 - $40 [ petscii_to_screencode::return#3 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#3 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [102] petscii_to_screencode::return#1 = petscii_to_screencode::petscii#0 + $80 [ petscii_to_screencode::return#1 ] ( main:7::petscii_to_screencode:38 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer petscii_to_screencode::return#1 ] { { petscii_to_screencode::petscii#0 = main::ch#0 } { petscii_to_screencode::return#0 = petscii_to_screencode::return#10 } } ) always clobbers reg byte a
|
|
Statement [105] printf_str::c#1 = *printf_str::s#5 [ printf_str::s#5 printf_str::c#1 ] ( main:7::printf_str:41 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 main::$6 printf_buffer printf_str::s#5 printf_str::c#1 ] { } main:7::printf_str:45 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer printf_str::s#5 printf_str::c#1 ] { } main:7::printf_str:49 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer printf_str::s#5 printf_str::c#1 ] { } main:7::printf_uchar:47::printf_number_buffer:117::printf_str:172 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_str::s#5 printf_str::c#1 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte y
|
|
Statement [110] callexecute *printf_str::putc#6 [ printf_str::s#0 ] ( main:7::printf_str:41 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 main::$6 printf_buffer printf_str::s#0 ] { } main:7::printf_str:45 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer printf_str::s#0 ] { } main:7::printf_str:49 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ch#0 printf_buffer printf_str::s#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::printf_str:172 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_str::s#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement sideeffect stackpullpadding(1) always clobbers reg byte a
|
|
Statement [113] *((char *)&printf_buffer) = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_uchar::uvalue#0 printf_buffer ] ( main:7::printf_uchar:47 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_uchar::uvalue#0 printf_buffer ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } } ) always clobbers reg byte a
|
|
Statement [116] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer) [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::buffer_sign#0 ] ( main:7::printf_uchar:47 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::buffer_sign#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [119] if(conio_cursor_y!=$19) goto cscroll::@return [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [128] conio_line_text = conio_line_text - $28 [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [129] conio_line_color = conio_line_color - $28 [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::cputc:43::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2] [ printf_buffer uctoa::buffer#11 ] ( main:7::printf_uchar:47::uctoa:115 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } } ) always clobbers reg byte a reg byte y
|
|
Statement [136] uctoa::buffer#3 = ++ uctoa::buffer#11 [ printf_buffer uctoa::buffer#3 ] ( main:7::printf_uchar:47::uctoa:115 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } } ) always clobbers reg byte a
|
|
Statement [137] *uctoa::buffer#3 = 0 [ printf_buffer ] ( main:7::printf_uchar:47::uctoa:115 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } } ) always clobbers reg byte a reg byte y
|
|
Statement [144] uctoa_append::buffer#0 = uctoa::buffer#11 [ printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( main:7::printf_uchar:47::uctoa:115 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a
|
|
Statement [154] strlen::return#2 = strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 strlen::return#2 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 strlen::return#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
|
|
Statement [155] printf_number_buffer::$19 = strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::$19 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [157] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::len#0 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [160] printf_number_buffer::padding#1 = (signed char)printf_uchar::format_min_length#0 - printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::padding#1 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [167] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@3 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [168] stackpush(char) = printf_number_buffer::buffer_sign#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( main:7::printf_uchar:47::printf_number_buffer:117 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement sideeffect stackpullpadding(1) always clobbers reg byte a
|
|
Statement [175] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [176] memcpy::src#4 = (char *)memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [177] memcpy::dst#4 = (char *)memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [179] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [181] *memcpy::dst#2 = *memcpy::src#2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:23::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:121 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:121 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memcpy:123 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memcpy:123 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte y
|
|
Statement [185] memset::end#0 = (char *)memset::str#3 + $28 [ memset::str#3 memset::c#4 memset::end#0 ] ( cputln:23::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [186] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( cputln:23::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [188] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:23::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [190] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:23::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:125 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:125 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:23::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:23::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } cputln:26::cscroll:69::memset:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::cputc:43::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::printf_uchar:47::printf_number_buffer:117::cputc:169::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166::cputc:210::cputln:26::cscroll:69::memset:127 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 printf_padding::length#0 printf_padding::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a reg byte y
|
|
Statement [195] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2] [ uctoa_append::value#2 ] ( main:7::printf_uchar:47::uctoa:115::uctoa_append:147 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a reg byte y
|
|
Statement [198] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( main:7::printf_uchar:47::uctoa:115::uctoa_append:147 [ main::ch#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#0 = main::ch#0 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a
|
|
Statement [201] if(0!=*strlen::str#2) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:7::printf_uchar:47::printf_number_buffer:117::strlen:153 [ main::ch#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_number_buffer::buffer_sign#0 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y
|
|
Statement [207] if(printf_padding::i#2<printf_padding::length#0) goto printf_padding::@2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_padding::length#0 printf_padding::i#2 ] ( main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_padding::length#0 printf_padding::i#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement [209] stackpush(char) = printf_padding::pad#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_padding::length#0 printf_padding::i#2 ] ( main:7::printf_uchar:47::printf_number_buffer:117::printf_padding:166 [ main::ch#0 printf_buffer printf_number_buffer::buffer_sign#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_padding::length#0 printf_padding::i#2 ] { { printf_uchar::uvalue#0 = main::ch#0 } } ) always clobbers reg byte a
|
|
Statement sideeffect stackpullpadding(1) always clobbers reg byte a
|
|
Potential registers zp[1]:77 [ conio_c64_init::line#2 conio_c64_init::line#0 ] : zp[1]:77 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:53 [ main::current#2 main::current#4 ] : zp[1]:53 ,
|
|
Potential registers zp[1]:73 [ gotoxy::y#4 gotoxy::y#2 ] : zp[1]:73 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:58 [ clrscr::l#2 clrscr::l#1 ] : zp[1]:58 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:56 [ clrscr::line_text#5 clrscr::line_text#1 ] : zp[2]:56 ,
|
|
Potential registers zp[2]:54 [ clrscr::line_cols#5 clrscr::line_cols#1 ] : zp[2]:54 ,
|
|
Potential registers zp[1]:43 [ clrscr::c#2 clrscr::c#1 ] : zp[1]:43 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:50 [ petscii_to_screencode::return#10 petscii_to_screencode::return#1 petscii_to_screencode::petscii#0 petscii_to_screencode::return#3 petscii_to_screencode::return#4 petscii_to_screencode::return#5 petscii_to_screencode::return#6 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:78 [ printf_str::putc#6 ] : zp[2]:78 ,
|
|
Potential registers zp[2]:25 [ printf_str::s#5 printf_str::s#6 printf_str::s#0 ] : zp[2]:25 ,
|
|
Potential registers zp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ] : zp[1]:34 , reg byte x ,
|
|
Potential registers zp[1]:33 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] : zp[1]:33 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:36 [ uctoa::started#2 uctoa::started#4 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:31 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] : zp[2]:31 ,
|
|
Potential registers zp[1]:41 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] : zp[1]:41 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:44 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:80 [ memcpy::source#2 ] : zp[2]:80 ,
|
|
Potential registers zp[2]:82 [ memcpy::destination#2 ] : zp[2]:82 ,
|
|
Potential registers zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] : zp[2]:4 ,
|
|
Potential registers zp[2]:6 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] : zp[2]:6 ,
|
|
Potential registers zp[2]:84 [ memset::str#3 ] : zp[2]:84 ,
|
|
Potential registers zp[1]:10 [ memset::c#4 ] : zp[1]:10 , reg byte x ,
|
|
Potential registers zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:2 ,
|
|
Potential registers zp[1]:13 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] : zp[1]:13 , reg byte x ,
|
|
Potential registers zp[1]:14 [ uctoa_append::digit#2 uctoa_append::digit#1 ] : zp[1]:14 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:22 [ strlen::str#2 strlen::str#0 ] : zp[2]:22 ,
|
|
Potential registers zp[2]:28 [ strlen::len#2 strlen::len#1 ] : zp[2]:28 ,
|
|
Potential registers zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ] : zp[1]:24 ,
|
|
Potential registers zp[1]:27 [ conio_cursor_x ] : zp[1]:27 ,
|
|
Potential registers zp[1]:16 [ conio_cursor_y ] : zp[1]:16 ,
|
|
Potential registers zp[2]:19 [ conio_line_text ] : zp[2]:19 ,
|
|
Potential registers zp[2]:17 [ conio_line_color ] : zp[2]:17 ,
|
|
Potential registers zp[1]:21 [ cputc::c#0 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:45 [ GETIN::return#0 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:60 [ main::ch#0 ] : zp[1]:60 ,
|
|
Potential registers zp[1]:62 [ petscii_to_screencode::return#0 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:74 [ main::$6 ] : zp[1]:74 ,
|
|
Potential registers zp[1]:61 [ printf_uchar::uvalue#0 ] : zp[1]:61 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:71 [ gotoxy::$7 ] : zp[2]:71 ,
|
|
Potential registers zp[2]:63 [ gotoxy::$8 ] : zp[2]:63 ,
|
|
Potential registers zp[2]:65 [ gotoxy::$9 ] : zp[2]:65 ,
|
|
Potential registers zp[2]:75 [ gotoxy::line_offset#0 ] : zp[2]:75 ,
|
|
Potential registers zp[2]:67 [ gotoxy::$5 ] : zp[2]:67 ,
|
|
Potential registers zp[2]:69 [ gotoxy::$6 ] : zp[2]:69 ,
|
|
Potential registers zp[1]:42 [ GETIN::return#1 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:30 [ printf_str::c#1 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:59 [ printf_number_buffer::buffer_sign#0 ] : zp[1]:59 ,
|
|
Potential registers zp[2]:46 [ uctoa::buffer#3 ] : zp[2]:46 ,
|
|
Potential registers zp[1]:40 [ uctoa::digit_value#0 ] : zp[1]:40 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:37 [ uctoa_append::buffer#0 ] : zp[2]:37 ,
|
|
Potential registers zp[1]:15 [ uctoa_append::sub#0 ] : zp[1]:15 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:35 [ uctoa_append::return#0 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:48 [ strlen::return#2 ] : zp[2]:48 ,
|
|
Potential registers zp[2]:51 [ printf_number_buffer::$19 ] : zp[2]:51 ,
|
|
Potential registers zp[1]:39 [ printf_padding::length#0 ] : zp[1]:39 ,
|
|
Potential registers zp[2]:11 [ memcpy::src_end#0 ] : zp[2]:11 ,
|
|
Potential registers zp[2]:8 [ memset::end#0 ] : zp[2]:8 ,
|
|
Potential registers mem[12] [ printf_buffer ] : mem[12] ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [memcpy] 30,125,000,000,004.25: zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 20,233,333,333,337.66: zp[2]:6 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 1,262,500,000,000.25: zp[2]:11 [ memcpy::src_end#0 ] 0: zp[2]:80 [ memcpy::source#2 ] 0: zp[2]:82 [ memcpy::destination#2 ]
|
|
Uplift Scope [memset] 33,566,666,666,672.33: zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,683,333,333,333.67: zp[2]:8 [ memset::end#0 ] 1,428,571,428,571.57: zp[1]:10 [ memset::c#4 ] 0: zp[2]:84 [ memset::str#3 ]
|
|
Uplift Scope [uctoa_append] 25,005,500,003.5: zp[1]:13 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] 20,005,000,002.5: zp[1]:14 [ uctoa_append::digit#2 uctoa_append::digit#1 ] 3,333,500,000.5: zp[1]:15 [ uctoa_append::sub#0 ] 2,000,002: zp[1]:35 [ uctoa_append::return#0 ] 1,375,000.25: zp[2]:37 [ uctoa_append::buffer#0 ]
|
|
Uplift Scope [] 344,086,023.75: zp[1]:16 [ conio_cursor_y ] 242,857,145.15: zp[2]:17 [ conio_line_color ] 240,217,393.58: zp[2]:19 [ conio_line_text ] 19,480,522.21: zp[1]:27 [ conio_cursor_x ] 0: mem[12] [ printf_buffer ]
|
|
Uplift Scope [cputc] 150,000,001.5: zp[1]:21 [ cputc::c#0 ]
|
|
Uplift Scope [strlen] 30,000,003: zp[2]:22 [ strlen::str#2 strlen::str#0 ] 15,002,501.75: zp[2]:28 [ strlen::len#2 strlen::len#1 ] 20,002: zp[2]:48 [ strlen::return#2 ]
|
|
Uplift Scope [printf_str] 25,150,004: zp[2]:25 [ printf_str::s#5 printf_str::s#6 printf_str::s#0 ] 10,000,001: zp[1]:30 [ printf_str::c#1 ] 0: zp[2]:78 [ printf_str::putc#6 ]
|
|
Uplift Scope [printf_padding] 26,000,002.6: zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ] 1,251,250.25: zp[1]:39 [ printf_padding::length#0 ]
|
|
Uplift Scope [uctoa] 3,835,004: zp[2]:31 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] 3,175,504.5: zp[1]:33 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] 2,307,694.62: zp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ] 1,600,001.6: zp[1]:36 [ uctoa::started#2 uctoa::started#4 ] 600,000.6: zp[1]:40 [ uctoa::digit_value#0 ] 20,002: zp[2]:46 [ uctoa::buffer#3 ]
|
|
Uplift Scope [printf_number_buffer] 65,006.5: zp[1]:41 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] 20,002: zp[1]:44 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] 10,001: zp[2]:51 [ printf_number_buffer::$19 ] 1,722.44: zp[1]:59 [ printf_number_buffer::buffer_sign#0 ]
|
|
Uplift Scope [GETIN] 36,667.33: zp[1]:42 [ GETIN::return#1 ] 20,002: zp[1]:45 [ GETIN::return#0 ]
|
|
Uplift Scope [clrscr] 32,503.25: zp[1]:43 [ clrscr::c#2 clrscr::c#1 ] 2,501.38: zp[2]:54 [ clrscr::line_cols#5 clrscr::line_cols#1 ] 2,382.05: zp[2]:56 [ clrscr::line_text#5 clrscr::line_text#1 ] 2,335.67: zp[1]:58 [ clrscr::l#2 clrscr::l#1 ]
|
|
Uplift Scope [petscii_to_screencode] 13,776.1: zp[1]:50 [ petscii_to_screencode::return#10 petscii_to_screencode::return#1 petscii_to_screencode::petscii#0 petscii_to_screencode::return#3 petscii_to_screencode::return#4 petscii_to_screencode::return#5 petscii_to_screencode::return#6 ] 202: zp[1]:62 [ petscii_to_screencode::return#0 ]
|
|
Uplift Scope [main] 4,422.8: zp[1]:53 [ main::current#2 main::current#4 ] 1,331.62: zp[1]:60 [ main::ch#0 ] 101: zp[1]:74 [ main::$6 ]
|
|
Uplift Scope [gotoxy] 202: zp[2]:63 [ gotoxy::$8 ] 202: zp[2]:65 [ gotoxy::$9 ] 202: zp[2]:67 [ gotoxy::$5 ] 202: zp[2]:69 [ gotoxy::$6 ] 151.5: zp[2]:71 [ gotoxy::$7 ] 138.33: zp[1]:73 [ gotoxy::y#4 gotoxy::y#2 ] 101: zp[2]:75 [ gotoxy::line_offset#0 ]
|
|
Uplift Scope [printf_uchar] 367.33: zp[1]:61 [ printf_uchar::uvalue#0 ]
|
|
Uplift Scope [conio_c64_init] 33: zp[1]:77 [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
|
Uplift Scope [MOS6526_CIA]
|
|
Uplift Scope [MOS6569_VICII]
|
|
Uplift Scope [MOS6581_SID]
|
|
Uplift Scope [RADIX]
|
|
Uplift Scope [cputln]
|
|
Uplift Scope [cscroll]
|
|
Uplift Scope [printf_format_number]
|
|
Uplift Scope [printf_buffer_number]
|
|
Uplift Scope [printf_format_string]
|
|
Uplift Scope [__start]
|
|
|
|
Uplifting [memcpy] best 131911 combination zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:6 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp[2]:11 [ memcpy::src_end#0 ] zp[2]:80 [ memcpy::source#2 ] zp[2]:82 [ memcpy::destination#2 ]
|
|
Uplifting [memset] best 131805 combination zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:8 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:84 [ memset::str#3 ]
|
|
Uplifting [uctoa_append] best 119602 combination reg byte x [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] reg byte y [ uctoa_append::digit#2 uctoa_append::digit#1 ] zp[1]:15 [ uctoa_append::sub#0 ] reg byte x [ uctoa_append::return#0 ] zp[2]:37 [ uctoa_append::buffer#0 ]
|
|
Uplifting [] best 119602 combination zp[1]:16 [ conio_cursor_y ] zp[2]:17 [ conio_line_color ] zp[2]:19 [ conio_line_text ] zp[1]:27 [ conio_cursor_x ] mem[12] [ printf_buffer ]
|
|
Uplifting [cputc] best 119593 combination reg byte a [ cputc::c#0 ]
|
|
Uplifting [strlen] best 119593 combination zp[2]:22 [ strlen::str#2 strlen::str#0 ] zp[2]:28 [ strlen::len#2 strlen::len#1 ] zp[2]:48 [ strlen::return#2 ]
|
|
Uplifting [printf_str] best 118893 combination zp[2]:25 [ printf_str::s#5 printf_str::s#6 printf_str::s#0 ] reg byte a [ printf_str::c#1 ] zp[2]:78 [ printf_str::putc#6 ]
|
|
Uplifting [printf_padding] best 118893 combination zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ] zp[1]:39 [ printf_padding::length#0 ]
|
|
Uplifting [uctoa] best 117987 combination zp[2]:31 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] zp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ] zp[1]:36 [ uctoa::started#2 uctoa::started#4 ] zp[1]:40 [ uctoa::digit_value#0 ] zp[2]:46 [ uctoa::buffer#3 ]
|
|
Uplifting [printf_number_buffer] best 117967 combination reg byte x [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] reg byte a [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:51 [ printf_number_buffer::$19 ] zp[1]:59 [ printf_number_buffer::buffer_sign#0 ]
|
|
Uplifting [GETIN] best 108964 combination reg byte a [ GETIN::return#1 ] reg byte a [ GETIN::return#0 ]
|
|
Uplifting [clrscr] best 107374 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:54 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:56 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
|
|
Uplifting [petscii_to_screencode] best 107213 combination reg byte a [ petscii_to_screencode::return#10 petscii_to_screencode::return#1 petscii_to_screencode::petscii#0 petscii_to_screencode::return#3 petscii_to_screencode::return#4 petscii_to_screencode::return#5 petscii_to_screencode::return#6 ] reg byte a [ petscii_to_screencode::return#0 ]
|
|
Uplifting [main] best 107213 combination zp[1]:53 [ main::current#2 main::current#4 ] zp[1]:60 [ main::ch#0 ] zp[1]:74 [ main::$6 ]
|
|
Uplifting [gotoxy] best 107200 combination zp[2]:63 [ gotoxy::$8 ] zp[2]:65 [ gotoxy::$9 ] zp[2]:67 [ gotoxy::$5 ] zp[2]:69 [ gotoxy::$6 ] zp[2]:71 [ gotoxy::$7 ] reg byte x [ gotoxy::y#4 gotoxy::y#2 ] zp[2]:75 [ gotoxy::line_offset#0 ]
|
|
Uplifting [printf_uchar] best 107167 combination reg byte x [ printf_uchar::uvalue#0 ]
|
|
Uplifting [conio_c64_init] best 107155 combination reg byte x [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
|
Uplifting [MOS6526_CIA] best 107155 combination
|
|
Uplifting [MOS6569_VICII] best 107155 combination
|
|
Uplifting [MOS6581_SID] best 107155 combination
|
|
Uplifting [RADIX] best 107155 combination
|
|
Uplifting [cputln] best 107155 combination
|
|
Uplifting [cscroll] best 107155 combination
|
|
Uplifting [printf_format_number] best 107155 combination
|
|
Uplifting [printf_buffer_number] best 107155 combination
|
|
Uplifting [printf_format_string] best 107155 combination
|
|
Uplifting [__start] best 107155 combination
|
|
Attempting to uplift remaining variables inzp[1]:15 [ uctoa_append::sub#0 ]
|
|
Uplifting [uctoa_append] best 107155 combination zp[1]:15 [ uctoa_append::sub#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:16 [ conio_cursor_y ]
|
|
Uplifting [] best 107155 combination zp[1]:16 [ conio_cursor_y ]
|
|
Attempting to uplift remaining variables inzp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ]
|
|
Uplifting [printf_padding] best 107155 combination zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:27 [ conio_cursor_x ]
|
|
Uplifting [] best 107155 combination zp[1]:27 [ conio_cursor_x ]
|
|
Attempting to uplift remaining variables inzp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ]
|
|
Uplifting [uctoa] best 107155 combination zp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:36 [ uctoa::started#2 uctoa::started#4 ]
|
|
Uplifting [uctoa] best 107155 combination zp[1]:36 [ uctoa::started#2 uctoa::started#4 ]
|
|
Attempting to uplift remaining variables inzp[1]:39 [ printf_padding::length#0 ]
|
|
Uplifting [printf_padding] best 107155 combination zp[1]:39 [ printf_padding::length#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:40 [ uctoa::digit_value#0 ]
|
|
Uplifting [uctoa] best 107155 combination zp[1]:40 [ uctoa::digit_value#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:53 [ main::current#2 main::current#4 ]
|
|
Uplifting [main] best 107155 combination zp[1]:53 [ main::current#2 main::current#4 ]
|
|
Attempting to uplift remaining variables inzp[1]:59 [ printf_number_buffer::buffer_sign#0 ]
|
|
Uplifting [printf_number_buffer] best 107155 combination zp[1]:59 [ printf_number_buffer::buffer_sign#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:60 [ main::ch#0 ]
|
|
Uplifting [main] best 107155 combination zp[1]:60 [ main::ch#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:74 [ main::$6 ]
|
|
Uplifting [main] best 107155 combination zp[1]:74 [ main::$6 ]
|
|
Coalescing zero page register [ zp[2]:31 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] ] with [ zp[2]:46 [ uctoa::buffer#3 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:31 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 ] ] with [ zp[2]:37 [ uctoa_append::buffer#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:80 [ memcpy::source#2 ] ] with [ zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:82 [ memcpy::destination#2 ] ] with [ zp[2]:6 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:84 [ memset::str#3 ] ] with [ zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:28 [ strlen::len#2 strlen::len#1 ] ] with [ zp[2]:48 [ strlen::return#2 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:71 [ gotoxy::$7 ] ] with [ zp[2]:65 [ gotoxy::$9 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:75 [ gotoxy::line_offset#0 ] ] with [ zp[2]:69 [ gotoxy::$6 ] ] - score: 1
|
|
Coalescing zero page register [ zp[1]:40 [ uctoa::digit_value#0 ] ] with [ zp[1]:15 [ uctoa_append::sub#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:28 [ strlen::len#2 strlen::len#1 strlen::return#2 ] ] with [ zp[2]:51 [ printf_number_buffer::$19 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:71 [ gotoxy::$7 gotoxy::$9 ] ] with [ zp[2]:75 [ gotoxy::line_offset#0 gotoxy::$6 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:78 [ printf_str::putc#6 ] ] with [ zp[2]:56 [ clrscr::line_text#5 clrscr::line_text#1 ] ]
|
|
Coalescing zero page register [ zp[2]:25 [ printf_str::s#5 printf_str::s#6 printf_str::s#0 ] ] with [ zp[2]:54 [ clrscr::line_cols#5 clrscr::line_cols#1 ] ]
|
|
Coalescing zero page register [ zp[2]:84 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:80 [ memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ]
|
|
Coalescing zero page register [ zp[2]:22 [ strlen::str#2 strlen::str#0 ] ] with [ zp[2]:31 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ] ]
|
|
Coalescing zero page register [ zp[1]:24 [ printf_padding::i#2 printf_padding::i#1 ] ] with [ zp[1]:34 [ uctoa::digit#2 uctoa::digit#1 ] ]
|
|
Coalescing zero page register [ zp[1]:74 [ main::$6 ] ] with [ zp[1]:36 [ uctoa::started#2 uctoa::started#4 ] ]
|
|
Coalescing zero page register [ zp[1]:40 [ uctoa::digit_value#0 uctoa_append::sub#0 ] ] with [ zp[1]:59 [ printf_number_buffer::buffer_sign#0 ] ]
|
|
Coalescing zero page register [ zp[2]:8 [ memset::end#0 ] ] with [ zp[2]:82 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ]
|
|
Coalescing zero page register [ zp[2]:22 [ strlen::str#2 strlen::str#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ] ] with [ zp[2]:78 [ printf_str::putc#6 clrscr::line_text#5 clrscr::line_text#1 ] ]
|
|
Coalescing zero page register [ zp[2]:28 [ strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 ] ] with [ zp[2]:25 [ printf_str::s#5 printf_str::s#6 printf_str::s#0 clrscr::line_cols#5 clrscr::line_cols#1 ] ]
|
|
Allocated (was zp[2]:84) zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
|
Allocated (was zp[2]:8) zp[2]:4 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
|
Allocated (was zp[2]:11) zp[2]:6 [ memcpy::src_end#0 ]
|
|
Allocated (was zp[1]:40) zp[1]:8 [ uctoa::digit_value#0 uctoa_append::sub#0 printf_number_buffer::buffer_sign#0 ]
|
|
Allocated (was zp[1]:16) zp[1]:9 [ conio_cursor_y ]
|
|
Allocated (was zp[2]:17) zp[2]:10 [ conio_line_color ]
|
|
Allocated (was zp[2]:19) zp[2]:12 [ conio_line_text ]
|
|
Allocated (was zp[2]:28) zp[2]:14 [ strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 printf_str::s#5 printf_str::s#6 printf_str::s#0 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
|
Allocated (was zp[2]:22) zp[2]:16 [ strlen::str#2 strlen::str#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 printf_str::putc#6 clrscr::line_text#5 clrscr::line_text#1 ]
|
|
Allocated (was zp[1]:24) zp[1]:18 [ printf_padding::i#2 printf_padding::i#1 uctoa::digit#2 uctoa::digit#1 ]
|
|
Allocated (was zp[1]:27) zp[1]:19 [ conio_cursor_x ]
|
|
Allocated (was zp[1]:74) zp[1]:20 [ main::$6 uctoa::started#2 uctoa::started#4 ]
|
|
Allocated (was zp[1]:39) zp[1]:21 [ printf_padding::length#0 ]
|
|
Allocated (was zp[1]:53) zp[1]:22 [ main::current#2 main::current#4 ]
|
|
Allocated (was zp[1]:60) zp[1]:23 [ main::ch#0 ]
|
|
Allocated (was zp[2]:71) zp[2]:24 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
|
|
Allocated (was zp[2]:63) zp[2]:26 [ gotoxy::$8 ]
|
|
Allocated (was zp[2]:67) zp[2]:28 [ gotoxy::$5 ]
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
// File Comments
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="cbm-keyboard.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(__start)
|
|
// Global Constants & labels
|
|
.const LIGHT_BLUE = $e
|
|
.const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
|
|
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
|
.const STACK_BASE = $103
|
|
.const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c
|
|
/// The VIC-II MOS 6567/6569
|
|
.label VICII = $d000
|
|
/// Color Ram
|
|
.label COLORRAM = $d800
|
|
/// Default address of screen character matrix
|
|
.label DEFAULT_SCREEN = $400
|
|
/// Default address of the chargen font (mixed case)
|
|
.label DEFAULT_FONT_MIXED = $1800
|
|
// The number of bytes on the screen
|
|
// The current cursor x-position
|
|
.label conio_cursor_x = $13
|
|
// The current cursor y-position
|
|
.label conio_cursor_y = 9
|
|
// The current text cursor line start
|
|
.label conio_line_text = $c
|
|
// The current color cursor line start
|
|
.label conio_line_color = $a
|
|
.segment Code
|
|
// __start
|
|
__start: {
|
|
jmp __init1
|
|
// __start::__init1
|
|
__init1:
|
|
// [1] conio_cursor_x = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z conio_cursor_x
|
|
// [2] conio_cursor_y = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z conio_cursor_y
|
|
// [3] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1
|
|
lda #<DEFAULT_SCREEN
|
|
sta.z conio_line_text
|
|
lda #>DEFAULT_SCREEN
|
|
sta.z conio_line_text+1
|
|
// [4] conio_line_color = COLORRAM -- pbuz1=pbuc1
|
|
lda #<COLORRAM
|
|
sta.z conio_line_color
|
|
lda #>COLORRAM
|
|
sta.z conio_line_color+1
|
|
// [5] call conio_c64_init
|
|
jsr conio_c64_init
|
|
// [6] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
|
|
__b1_from___init1:
|
|
jmp __b1
|
|
// __start::@1
|
|
__b1:
|
|
// [7] call main
|
|
// [27] phi from __start::@1 to main [phi:__start::@1->main]
|
|
main_from___b1:
|
|
jsr main
|
|
jmp __breturn
|
|
// __start::@return
|
|
__breturn:
|
|
// [8] return
|
|
rts
|
|
}
|
|
// conio_c64_init
|
|
// Set initial cursor position
|
|
conio_c64_init: {
|
|
// Position cursor at current line
|
|
.label BASIC_CURSOR_LINE = $d6
|
|
// [9] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE -- vbuxx=_deref_pbuc1
|
|
ldx.z BASIC_CURSOR_LINE
|
|
// [10] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #$19
|
|
bcc __b2_from_conio_c64_init
|
|
// [12] phi from conio_c64_init to conio_c64_init::@1 [phi:conio_c64_init->conio_c64_init::@1]
|
|
__b1_from_conio_c64_init:
|
|
// [12] phi conio_c64_init::line#2 = $19-1 [phi:conio_c64_init->conio_c64_init::@1#0] -- vbuxx=vbuc1
|
|
ldx #$19-1
|
|
jmp __b1
|
|
// [11] phi from conio_c64_init to conio_c64_init::@2 [phi:conio_c64_init->conio_c64_init::@2]
|
|
__b2_from_conio_c64_init:
|
|
jmp __b2
|
|
// conio_c64_init::@2
|
|
__b2:
|
|
// [12] phi from conio_c64_init::@2 to conio_c64_init::@1 [phi:conio_c64_init::@2->conio_c64_init::@1]
|
|
__b1_from___b2:
|
|
// [12] phi conio_c64_init::line#2 = conio_c64_init::line#0 [phi:conio_c64_init::@2->conio_c64_init::@1#0] -- register_copy
|
|
jmp __b1
|
|
// conio_c64_init::@1
|
|
__b1:
|
|
// [13] gotoxy::y#2 = conio_c64_init::line#2
|
|
// [14] call gotoxy
|
|
jsr gotoxy
|
|
jmp __breturn
|
|
// conio_c64_init::@return
|
|
__breturn:
|
|
// [15] return
|
|
rts
|
|
}
|
|
// cputc
|
|
// Output one character at the current cursor position
|
|
// Moves the cursor forward. Scrolls the entire screen if needed
|
|
// void cputc(__register(A) char c)
|
|
cputc: {
|
|
.const OFFSET_STACK_C = 0
|
|
// [16] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) -- vbuaa=_stackidxbyte_vbuc1
|
|
tsx
|
|
lda STACK_BASE+OFFSET_STACK_C,x
|
|
// [17] if(cputc::c#0==' ') goto cputc::@1 -- vbuaa_eq_vbuc1_then_la1
|
|
cmp #'\n'
|
|
beq __b1_from_cputc
|
|
jmp __b2
|
|
// cputc::@2
|
|
__b2:
|
|
// [18] conio_line_text[conio_cursor_x] = cputc::c#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z conio_cursor_x
|
|
sta (conio_line_text),y
|
|
// [19] conio_line_color[conio_cursor_x] = LIGHT_BLUE -- pbuz1_derefidx_vbuz2=vbuc1
|
|
lda #LIGHT_BLUE
|
|
ldy.z conio_cursor_x
|
|
sta (conio_line_color),y
|
|
// [20] conio_cursor_x = ++ conio_cursor_x -- vbuz1=_inc_vbuz1
|
|
inc.z conio_cursor_x
|
|
// [21] if(conio_cursor_x!=$28) goto cputc::@return -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$28
|
|
cmp.z conio_cursor_x
|
|
bne __breturn
|
|
// [22] phi from cputc::@2 to cputc::@3 [phi:cputc::@2->cputc::@3]
|
|
__b3_from___b2:
|
|
jmp __b3
|
|
// cputc::@3
|
|
__b3:
|
|
// [23] call cputln
|
|
jsr cputln
|
|
jmp __breturn
|
|
// cputc::@return
|
|
__breturn:
|
|
// [24] return
|
|
rts
|
|
// [25] phi from cputc to cputc::@1 [phi:cputc->cputc::@1]
|
|
__b1_from_cputc:
|
|
jmp __b1
|
|
// cputc::@1
|
|
__b1:
|
|
// [26] call cputln
|
|
jsr cputln
|
|
jmp __breturn
|
|
}
|
|
// main
|
|
// Show the currently pressed key
|
|
main: {
|
|
.const toD0181_return = (>(DEFAULT_SCREEN&$3fff)*4)|(>DEFAULT_FONT_MIXED)/4&$f
|
|
.label __6 = $14
|
|
.label ch = $17
|
|
.label current = $16
|
|
// [28] phi from main to main::toD0181 [phi:main->main::toD0181]
|
|
toD0181_from_main:
|
|
jmp toD0181
|
|
// main::toD0181
|
|
toD0181:
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #toD0181_return
|
|
sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY
|
|
// [30] call clrscr
|
|
// [71] phi from main::@3 to clrscr [phi:main::@3->clrscr]
|
|
clrscr_from___b3:
|
|
jsr clrscr
|
|
// [31] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
|
|
__b1_from___b3:
|
|
// [31] phi main::current#2 = 0 [phi:main::@3->main::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z current
|
|
jmp __b1
|
|
// [31] phi from main::@4 main::@9 to main::@1 [phi:main::@4/main::@9->main::@1]
|
|
__b1_from___b4:
|
|
__b1_from___b9:
|
|
// [31] phi main::current#2 = main::current#2 [phi:main::@4/main::@9->main::@1#0] -- register_copy
|
|
jmp __b1
|
|
// main::@1
|
|
__b1:
|
|
// [32] call GETIN
|
|
jsr GETIN
|
|
// [33] GETIN::return#0 = GETIN::return#1
|
|
jmp __b4
|
|
// main::@4
|
|
__b4:
|
|
// [34] main::ch#0 = GETIN::return#0 -- vbuz1=vbuaa
|
|
sta.z ch
|
|
// [35] if(0==main::ch#0) goto main::@1 -- 0_eq_vbuz1_then_la1
|
|
lda.z ch
|
|
beq __b1_from___b4
|
|
jmp __b10
|
|
// main::@10
|
|
__b10:
|
|
// [36] if(main::ch#0!=main::current#2) goto main::@2 -- vbuz1_neq_vbuz2_then_la1
|
|
lda.z ch
|
|
cmp.z current
|
|
bne __b2
|
|
// [31] phi from main::@10 to main::@1 [phi:main::@10->main::@1]
|
|
__b1_from___b10:
|
|
jmp __b1
|
|
// main::@2
|
|
__b2:
|
|
// [37] petscii_to_screencode::petscii#0 = main::ch#0 -- vbuaa=vbuz1
|
|
lda.z ch
|
|
// [38] call petscii_to_screencode
|
|
jsr petscii_to_screencode
|
|
// [39] petscii_to_screencode::return#0 = petscii_to_screencode::return#10
|
|
jmp __b5
|
|
// main::@5
|
|
__b5:
|
|
// [40] main::$6 = petscii_to_screencode::return#0 -- vbuz1=vbuaa
|
|
sta.z __6
|
|
// [41] call printf_str
|
|
// [103] phi from main::@5 to printf_str [phi:main::@5->printf_str]
|
|
printf_str_from___b5:
|
|
// [103] phi printf_str::putc#6 = &cputc [phi:main::@5->printf_str#0] -- pprz1=pprc1
|
|
lda #<cputc
|
|
sta.z printf_str.putc
|
|
lda #>cputc
|
|
sta.z printf_str.putc+1
|
|
// [103] phi printf_str::s#6 = main::s [phi:main::@5->printf_str#1] -- pbuz1=pbuc1
|
|
lda #<s
|
|
sta.z printf_str.s
|
|
lda #>s
|
|
sta.z printf_str.s+1
|
|
jsr printf_str
|
|
jmp __b6
|
|
// main::@6
|
|
__b6:
|
|
// [42] stackpush(char) = main::$6 -- _stackpushbyte_=vbuz1
|
|
lda.z __6
|
|
pha
|
|
// [43] callexecute cputc -- call_vprc1
|
|
jsr cputc
|
|
// sideeffect stackpullpadding(1) -- _stackpullpadding_1
|
|
pla
|
|
// [45] call printf_str
|
|
// [103] phi from main::@6 to printf_str [phi:main::@6->printf_str]
|
|
printf_str_from___b6:
|
|
// [103] phi printf_str::putc#6 = &cputc [phi:main::@6->printf_str#0] -- pprz1=pprc1
|
|
lda #<cputc
|
|
sta.z printf_str.putc
|
|
lda #>cputc
|
|
sta.z printf_str.putc+1
|
|
// [103] phi printf_str::s#6 = main::s1 [phi:main::@6->printf_str#1] -- pbuz1=pbuc1
|
|
lda #<s1
|
|
sta.z printf_str.s
|
|
lda #>s1
|
|
sta.z printf_str.s+1
|
|
jsr printf_str
|
|
jmp __b7
|
|
// main::@7
|
|
__b7:
|
|
// [46] printf_uchar::uvalue#0 = main::ch#0 -- vbuxx=vbuz1
|
|
ldx.z ch
|
|
// [47] call printf_uchar
|
|
// [112] phi from main::@7 to printf_uchar [phi:main::@7->printf_uchar]
|
|
printf_uchar_from___b7:
|
|
jsr printf_uchar
|
|
// [48] phi from main::@7 to main::@8 [phi:main::@7->main::@8]
|
|
__b8_from___b7:
|
|
jmp __b8
|
|
// main::@8
|
|
__b8:
|
|
// [49] call printf_str
|
|
// [103] phi from main::@8 to printf_str [phi:main::@8->printf_str]
|
|
printf_str_from___b8:
|
|
// [103] phi printf_str::putc#6 = &cputc [phi:main::@8->printf_str#0] -- pprz1=pprc1
|
|
lda #<cputc
|
|
sta.z printf_str.putc
|
|
lda #>cputc
|
|
sta.z printf_str.putc+1
|
|
// [103] phi printf_str::s#6 = main::s2 [phi:main::@8->printf_str#1] -- pbuz1=pbuc1
|
|
lda #<s2
|
|
sta.z printf_str.s
|
|
lda #>s2
|
|
sta.z printf_str.s+1
|
|
jsr printf_str
|
|
jmp __b9
|
|
// main::@9
|
|
__b9:
|
|
// [50] main::current#4 = main::ch#0 -- vbuz1=vbuz2
|
|
lda.z ch
|
|
sta.z current
|
|
jmp __b1_from___b9
|
|
.segment Data
|
|
s: .text "'"
|
|
.byte 0
|
|
s1: .text "'($"
|
|
.byte 0
|
|
s2: .text ") "
|
|
.byte 0
|
|
}
|
|
.segment Code
|
|
// gotoxy
|
|
// Set the cursor to the specified position
|
|
// void gotoxy(char x, __register(X) char y)
|
|
gotoxy: {
|
|
.const x = 0
|
|
.label __5 = $1c
|
|
.label __6 = $18
|
|
.label __7 = $18
|
|
.label line_offset = $18
|
|
.label __8 = $1a
|
|
.label __9 = $18
|
|
// [51] if(gotoxy::y#2<$19+1) goto gotoxy::@3 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #$19+1
|
|
bcc __b3_from_gotoxy
|
|
// [53] phi from gotoxy to gotoxy::@1 [phi:gotoxy->gotoxy::@1]
|
|
__b1_from_gotoxy:
|
|
// [53] phi gotoxy::y#4 = 0 [phi:gotoxy->gotoxy::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b1
|
|
// [52] phi from gotoxy to gotoxy::@3 [phi:gotoxy->gotoxy::@3]
|
|
__b3_from_gotoxy:
|
|
jmp __b3
|
|
// gotoxy::@3
|
|
__b3:
|
|
// [53] phi from gotoxy::@3 to gotoxy::@1 [phi:gotoxy::@3->gotoxy::@1]
|
|
__b1_from___b3:
|
|
// [53] phi gotoxy::y#4 = gotoxy::y#2 [phi:gotoxy::@3->gotoxy::@1#0] -- register_copy
|
|
jmp __b1
|
|
// gotoxy::@1
|
|
__b1:
|
|
jmp __b2
|
|
// gotoxy::@2
|
|
__b2:
|
|
// [54] conio_cursor_x = gotoxy::x#2 -- vbuz1=vbuc1
|
|
lda #x
|
|
sta.z conio_cursor_x
|
|
// [55] conio_cursor_y = gotoxy::y#4 -- vbuz1=vbuxx
|
|
stx.z conio_cursor_y
|
|
// [56] gotoxy::$7 = (unsigned int)gotoxy::y#4 -- vwuz1=_word_vbuxx
|
|
txa
|
|
sta.z __7
|
|
lda #0
|
|
sta.z __7+1
|
|
// [57] gotoxy::$8 = gotoxy::$7 << 2 -- vwuz1=vwuz2_rol_2
|
|
lda.z __7
|
|
asl
|
|
sta.z __8
|
|
lda.z __7+1
|
|
rol
|
|
sta.z __8+1
|
|
asl.z __8
|
|
rol.z __8+1
|
|
// [58] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 -- vwuz1=vwuz2_plus_vwuz1
|
|
clc
|
|
lda.z __9
|
|
adc.z __8
|
|
sta.z __9
|
|
lda.z __9+1
|
|
adc.z __8+1
|
|
sta.z __9+1
|
|
// [59] gotoxy::line_offset#0 = gotoxy::$9 << 3 -- vwuz1=vwuz1_rol_3
|
|
asl.z line_offset
|
|
rol.z line_offset+1
|
|
asl.z line_offset
|
|
rol.z line_offset+1
|
|
asl.z line_offset
|
|
rol.z line_offset+1
|
|
// [60] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
|
lda.z line_offset
|
|
clc
|
|
adc #<DEFAULT_SCREEN
|
|
sta.z __5
|
|
lda.z line_offset+1
|
|
adc #>DEFAULT_SCREEN
|
|
sta.z __5+1
|
|
// [61] conio_line_text = gotoxy::$5 -- pbuz1=pbuz2
|
|
lda.z __5
|
|
sta.z conio_line_text
|
|
lda.z __5+1
|
|
sta.z conio_line_text+1
|
|
// [62] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz1
|
|
lda.z __6
|
|
clc
|
|
adc #<COLORRAM
|
|
sta.z __6
|
|
lda.z __6+1
|
|
adc #>COLORRAM
|
|
sta.z __6+1
|
|
// [63] conio_line_color = gotoxy::$6 -- pbuz1=pbuz2
|
|
lda.z __6
|
|
sta.z conio_line_color
|
|
lda.z __6+1
|
|
sta.z conio_line_color+1
|
|
jmp __breturn
|
|
// gotoxy::@return
|
|
__breturn:
|
|
// [64] return
|
|
rts
|
|
}
|
|
// cputln
|
|
// Print a newline
|
|
cputln: {
|
|
// [65] conio_line_text = conio_line_text + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z conio_line_text
|
|
sta.z conio_line_text
|
|
bcc !+
|
|
inc.z conio_line_text+1
|
|
!:
|
|
// [66] conio_line_color = conio_line_color + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z conio_line_color
|
|
sta.z conio_line_color
|
|
bcc !+
|
|
inc.z conio_line_color+1
|
|
!:
|
|
// [67] conio_cursor_x = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z conio_cursor_x
|
|
// [68] conio_cursor_y = ++ conio_cursor_y -- vbuz1=_inc_vbuz1
|
|
inc.z conio_cursor_y
|
|
// [69] call cscroll
|
|
jsr cscroll
|
|
jmp __breturn
|
|
// cputln::@return
|
|
__breturn:
|
|
// [70] return
|
|
rts
|
|
}
|
|
// clrscr
|
|
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
|
|
clrscr: {
|
|
.label line_text = $10
|
|
.label line_cols = $e
|
|
// [72] phi from clrscr to clrscr::@1 [phi:clrscr->clrscr::@1]
|
|
__b1_from_clrscr:
|
|
// [72] phi clrscr::line_cols#5 = COLORRAM [phi:clrscr->clrscr::@1#0] -- pbuz1=pbuc1
|
|
lda #<COLORRAM
|
|
sta.z line_cols
|
|
lda #>COLORRAM
|
|
sta.z line_cols+1
|
|
// [72] phi clrscr::line_text#5 = DEFAULT_SCREEN [phi:clrscr->clrscr::@1#1] -- pbuz1=pbuc1
|
|
lda #<DEFAULT_SCREEN
|
|
sta.z line_text
|
|
lda #>DEFAULT_SCREEN
|
|
sta.z line_text+1
|
|
// [72] phi clrscr::l#2 = 0 [phi:clrscr->clrscr::@1#2] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b1
|
|
// clrscr::@1
|
|
__b1:
|
|
// [73] if(clrscr::l#2<$19) goto clrscr::@3 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #$19
|
|
bcc __b3_from___b1
|
|
jmp __b2
|
|
// clrscr::@2
|
|
__b2:
|
|
// [74] conio_cursor_x = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z conio_cursor_x
|
|
// [75] conio_cursor_y = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z conio_cursor_y
|
|
// [76] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1
|
|
lda #<DEFAULT_SCREEN
|
|
sta.z conio_line_text
|
|
lda #>DEFAULT_SCREEN
|
|
sta.z conio_line_text+1
|
|
// [77] conio_line_color = COLORRAM -- pbuz1=pbuc1
|
|
lda #<COLORRAM
|
|
sta.z conio_line_color
|
|
lda #>COLORRAM
|
|
sta.z conio_line_color+1
|
|
jmp __breturn
|
|
// clrscr::@return
|
|
__breturn:
|
|
// [78] return
|
|
rts
|
|
// [79] phi from clrscr::@1 to clrscr::@3 [phi:clrscr::@1->clrscr::@3]
|
|
__b3_from___b1:
|
|
// [79] phi clrscr::c#2 = 0 [phi:clrscr::@1->clrscr::@3#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
jmp __b3
|
|
// clrscr::@3
|
|
__b3:
|
|
// [80] if(clrscr::c#2<$28) goto clrscr::@4 -- vbuyy_lt_vbuc1_then_la1
|
|
cpy #$28
|
|
bcc __b4
|
|
jmp __b5
|
|
// clrscr::@5
|
|
__b5:
|
|
// [81] clrscr::line_text#1 = clrscr::line_text#5 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z line_text
|
|
sta.z line_text
|
|
bcc !+
|
|
inc.z line_text+1
|
|
!:
|
|
// [82] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z line_cols
|
|
sta.z line_cols
|
|
bcc !+
|
|
inc.z line_cols+1
|
|
!:
|
|
// [83] clrscr::l#1 = ++ clrscr::l#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [72] phi from clrscr::@5 to clrscr::@1 [phi:clrscr::@5->clrscr::@1]
|
|
__b1_from___b5:
|
|
// [72] phi clrscr::line_cols#5 = clrscr::line_cols#1 [phi:clrscr::@5->clrscr::@1#0] -- register_copy
|
|
// [72] phi clrscr::line_text#5 = clrscr::line_text#1 [phi:clrscr::@5->clrscr::@1#1] -- register_copy
|
|
// [72] phi clrscr::l#2 = clrscr::l#1 [phi:clrscr::@5->clrscr::@1#2] -- register_copy
|
|
jmp __b1
|
|
// clrscr::@4
|
|
__b4:
|
|
// [84] clrscr::line_text#5[clrscr::c#2] = ' ' -- pbuz1_derefidx_vbuyy=vbuc1
|
|
lda #' '
|
|
sta (line_text),y
|
|
// [85] clrscr::line_cols#5[clrscr::c#2] = LIGHT_BLUE -- pbuz1_derefidx_vbuyy=vbuc1
|
|
lda #LIGHT_BLUE
|
|
sta (line_cols),y
|
|
// [86] clrscr::c#1 = ++ clrscr::c#2 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [79] phi from clrscr::@4 to clrscr::@3 [phi:clrscr::@4->clrscr::@3]
|
|
__b3_from___b4:
|
|
// [79] phi clrscr::c#2 = clrscr::c#1 [phi:clrscr::@4->clrscr::@3#0] -- register_copy
|
|
jmp __b3
|
|
}
|
|
// GETIN
|
|
// GETIN. Read byte from default input. (If not keyboard, must call OPEN and CHKIN beforehands.)
|
|
// Return: next byte in buffer or 0 if buffer is empty.
|
|
GETIN: {
|
|
.label ch = $ff
|
|
// asm { jsr$ffe4 stach }
|
|
jsr $ffe4
|
|
sta ch
|
|
// [88] GETIN::return#1 = *GETIN::ch -- vbuaa=_deref_pbuc1
|
|
lda.z ch
|
|
jmp __breturn
|
|
// GETIN::@return
|
|
__breturn:
|
|
// [89] return
|
|
rts
|
|
}
|
|
// petscii_to_screencode
|
|
// Convert a PETSCII char to screencode
|
|
// __register(A) char petscii_to_screencode(__register(A) char petscii)
|
|
petscii_to_screencode: {
|
|
// [90] if(petscii_to_screencode::petscii#0<$20) goto petscii_to_screencode::@1 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$20
|
|
bcc __b1
|
|
jmp __b6
|
|
// petscii_to_screencode::@6
|
|
__b6:
|
|
// [91] if(petscii_to_screencode::petscii#0<$40) goto petscii_to_screencode::@return -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$40
|
|
bcc __breturn_from___b6
|
|
jmp __b7
|
|
// petscii_to_screencode::@7
|
|
__b7:
|
|
// [92] if(petscii_to_screencode::petscii#0<$60) goto petscii_to_screencode::@2 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$60
|
|
bcc __b2
|
|
jmp __b8
|
|
// petscii_to_screencode::@8
|
|
__b8:
|
|
// [93] if(petscii_to_screencode::petscii#0<$80) goto petscii_to_screencode::@3 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$80
|
|
bcc __b3
|
|
jmp __b9
|
|
// petscii_to_screencode::@9
|
|
__b9:
|
|
// [94] if(petscii_to_screencode::petscii#0<$a0) goto petscii_to_screencode::@4 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$a0
|
|
bcc __b4
|
|
jmp __b10
|
|
// petscii_to_screencode::@10
|
|
__b10:
|
|
// [95] if(petscii_to_screencode::petscii#0<$ff) goto petscii_to_screencode::@5 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$ff
|
|
bcc __b5
|
|
// [97] phi from petscii_to_screencode::@10 to petscii_to_screencode::@return [phi:petscii_to_screencode::@10->petscii_to_screencode::@return]
|
|
__breturn_from___b10:
|
|
// [97] phi petscii_to_screencode::return#10 = $5e [phi:petscii_to_screencode::@10->petscii_to_screencode::@return#0] -- vbuaa=vbuc1
|
|
lda #$5e
|
|
jmp __breturn
|
|
// petscii_to_screencode::@5
|
|
__b5:
|
|
// [96] petscii_to_screencode::return#6 = petscii_to_screencode::petscii#0 - $80 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$80
|
|
// [97] phi from petscii_to_screencode::@1 petscii_to_screencode::@2 petscii_to_screencode::@3 petscii_to_screencode::@4 petscii_to_screencode::@5 petscii_to_screencode::@6 to petscii_to_screencode::@return [phi:petscii_to_screencode::@1/petscii_to_screencode::@2/petscii_to_screencode::@3/petscii_to_screencode::@4/petscii_to_screencode::@5/petscii_to_screencode::@6->petscii_to_screencode::@return]
|
|
__breturn_from___b1:
|
|
__breturn_from___b2:
|
|
__breturn_from___b3:
|
|
__breturn_from___b4:
|
|
__breturn_from___b5:
|
|
__breturn_from___b6:
|
|
// [97] phi petscii_to_screencode::return#10 = petscii_to_screencode::return#1 [phi:petscii_to_screencode::@1/petscii_to_screencode::@2/petscii_to_screencode::@3/petscii_to_screencode::@4/petscii_to_screencode::@5/petscii_to_screencode::@6->petscii_to_screencode::@return#0] -- register_copy
|
|
jmp __breturn
|
|
// petscii_to_screencode::@return
|
|
__breturn:
|
|
// [98] return
|
|
rts
|
|
// petscii_to_screencode::@4
|
|
__b4:
|
|
// [99] petscii_to_screencode::return#5 = petscii_to_screencode::petscii#0 + $40 -- vbuaa=vbuaa_plus_vbuc1
|
|
clc
|
|
adc #$40
|
|
jmp __breturn_from___b4
|
|
// petscii_to_screencode::@3
|
|
__b3:
|
|
// [100] petscii_to_screencode::return#4 = petscii_to_screencode::petscii#0 - $20 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$20
|
|
jmp __breturn_from___b3
|
|
// petscii_to_screencode::@2
|
|
__b2:
|
|
// [101] petscii_to_screencode::return#3 = petscii_to_screencode::petscii#0 - $40 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$40
|
|
jmp __breturn_from___b2
|
|
// petscii_to_screencode::@1
|
|
__b1:
|
|
// [102] petscii_to_screencode::return#1 = petscii_to_screencode::petscii#0 + $80 -- vbuaa=vbuaa_plus_vbuc1
|
|
clc
|
|
adc #$80
|
|
jmp __breturn_from___b1
|
|
}
|
|
// printf_str
|
|
/// Print a NUL-terminated string
|
|
// void printf_str(__zp($10) void (*putc)(char), __zp($e) const char *s)
|
|
printf_str: {
|
|
.label s = $e
|
|
.label putc = $10
|
|
// [104] phi from printf_str printf_str::@2 to printf_str::@1 [phi:printf_str/printf_str::@2->printf_str::@1]
|
|
__b1_from_printf_str:
|
|
__b1_from___b2:
|
|
// [104] phi printf_str::s#5 = printf_str::s#6 [phi:printf_str/printf_str::@2->printf_str::@1#0] -- register_copy
|
|
jmp __b1
|
|
// printf_str::@1
|
|
__b1:
|
|
// [105] printf_str::c#1 = *printf_str::s#5 -- vbuaa=_deref_pbuz1
|
|
ldy #0
|
|
lda (s),y
|
|
// [106] printf_str::s#0 = ++ printf_str::s#5 -- pbuz1=_inc_pbuz1
|
|
inc.z s
|
|
bne !+
|
|
inc.z s+1
|
|
!:
|
|
// [107] if(0!=printf_str::c#1) goto printf_str::@2 -- 0_neq_vbuaa_then_la1
|
|
cmp #0
|
|
bne __b2
|
|
jmp __breturn
|
|
// printf_str::@return
|
|
__breturn:
|
|
// [108] return
|
|
rts
|
|
// printf_str::@2
|
|
__b2:
|
|
// [109] stackpush(char) = printf_str::c#1 -- _stackpushbyte_=vbuaa
|
|
pha
|
|
// [110] callexecute *printf_str::putc#6 -- call__deref_pprz1
|
|
jsr icall2
|
|
// sideeffect stackpullpadding(1) -- _stackpullpadding_1
|
|
pla
|
|
jmp __b1_from___b2
|
|
// Outside Flow
|
|
icall2:
|
|
jmp (putc)
|
|
}
|
|
// printf_uchar
|
|
// Print an unsigned char using a specific format
|
|
// void printf_uchar(void (*putc)(char), __register(X) char uvalue, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
|
printf_uchar: {
|
|
.label putc = cputc
|
|
.label format_min_length = 2
|
|
jmp __b1
|
|
// printf_uchar::@1
|
|
__b1:
|
|
// [113] *((char *)&printf_buffer) = 0 -- _deref_pbuc1=vbuc2
|
|
// Handle any sign
|
|
lda #0
|
|
sta printf_buffer
|
|
// [114] uctoa::value#1 = printf_uchar::uvalue#0
|
|
// [115] call uctoa
|
|
// Format number into buffer
|
|
// [132] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa]
|
|
uctoa_from___b1:
|
|
jsr uctoa
|
|
jmp __b2
|
|
// printf_uchar::@2
|
|
__b2:
|
|
// [116] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer) -- vbuz1=_deref_pbuc1
|
|
lda printf_buffer
|
|
sta.z printf_number_buffer.buffer_sign
|
|
// [117] call printf_number_buffer
|
|
// Print using format
|
|
// [151] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer]
|
|
printf_number_buffer_from___b2:
|
|
jsr printf_number_buffer
|
|
jmp __breturn
|
|
// printf_uchar::@return
|
|
__breturn:
|
|
// [118] return
|
|
rts
|
|
}
|
|
// cscroll
|
|
// Scroll the entire screen if the cursor is beyond the last line
|
|
cscroll: {
|
|
// [119] if(conio_cursor_y!=$19) goto cscroll::@return -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$19
|
|
cmp.z conio_cursor_y
|
|
bne __breturn
|
|
// [120] phi from cscroll to cscroll::@1 [phi:cscroll->cscroll::@1]
|
|
__b1_from_cscroll:
|
|
jmp __b1
|
|
// cscroll::@1
|
|
__b1:
|
|
// [121] call memcpy
|
|
// [174] phi from cscroll::@1 to memcpy [phi:cscroll::@1->memcpy]
|
|
memcpy_from___b1:
|
|
// [174] phi memcpy::destination#2 = (void *)DEFAULT_SCREEN [phi:cscroll::@1->memcpy#0] -- pvoz1=pvoc1
|
|
lda #<DEFAULT_SCREEN
|
|
sta.z memcpy.destination
|
|
lda #>DEFAULT_SCREEN
|
|
sta.z memcpy.destination+1
|
|
// [174] phi memcpy::source#2 = (void *)DEFAULT_SCREEN+$28 [phi:cscroll::@1->memcpy#1] -- pvoz1=pvoc1
|
|
lda #<DEFAULT_SCREEN+$28
|
|
sta.z memcpy.source
|
|
lda #>DEFAULT_SCREEN+$28
|
|
sta.z memcpy.source+1
|
|
jsr memcpy
|
|
// [122] phi from cscroll::@1 to cscroll::@2 [phi:cscroll::@1->cscroll::@2]
|
|
__b2_from___b1:
|
|
jmp __b2
|
|
// cscroll::@2
|
|
__b2:
|
|
// [123] call memcpy
|
|
// [174] phi from cscroll::@2 to memcpy [phi:cscroll::@2->memcpy]
|
|
memcpy_from___b2:
|
|
// [174] phi memcpy::destination#2 = (void *)COLORRAM [phi:cscroll::@2->memcpy#0] -- pvoz1=pvoc1
|
|
lda #<COLORRAM
|
|
sta.z memcpy.destination
|
|
lda #>COLORRAM
|
|
sta.z memcpy.destination+1
|
|
// [174] phi memcpy::source#2 = (void *)COLORRAM+$28 [phi:cscroll::@2->memcpy#1] -- pvoz1=pvoc1
|
|
lda #<COLORRAM+$28
|
|
sta.z memcpy.source
|
|
lda #>COLORRAM+$28
|
|
sta.z memcpy.source+1
|
|
jsr memcpy
|
|
// [124] phi from cscroll::@2 to cscroll::@3 [phi:cscroll::@2->cscroll::@3]
|
|
__b3_from___b2:
|
|
jmp __b3
|
|
// cscroll::@3
|
|
__b3:
|
|
// [125] call memset
|
|
// [184] phi from cscroll::@3 to memset [phi:cscroll::@3->memset]
|
|
memset_from___b3:
|
|
// [184] phi memset::c#4 = ' ' [phi:cscroll::@3->memset#0] -- vbuxx=vbuc1
|
|
ldx #' '
|
|
// [184] phi memset::str#3 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28 [phi:cscroll::@3->memset#1] -- pvoz1=pvoc1
|
|
lda #<DEFAULT_SCREEN+$19*$28-$28
|
|
sta.z memset.str
|
|
lda #>DEFAULT_SCREEN+$19*$28-$28
|
|
sta.z memset.str+1
|
|
jsr memset
|
|
// [126] phi from cscroll::@3 to cscroll::@4 [phi:cscroll::@3->cscroll::@4]
|
|
__b4_from___b3:
|
|
jmp __b4
|
|
// cscroll::@4
|
|
__b4:
|
|
// [127] call memset
|
|
// [184] phi from cscroll::@4 to memset [phi:cscroll::@4->memset]
|
|
memset_from___b4:
|
|
// [184] phi memset::c#4 = LIGHT_BLUE [phi:cscroll::@4->memset#0] -- vbuxx=vbuc1
|
|
ldx #LIGHT_BLUE
|
|
// [184] phi memset::str#3 = (void *)COLORRAM+(unsigned int)$19*$28-$28 [phi:cscroll::@4->memset#1] -- pvoz1=pvoc1
|
|
lda #<COLORRAM+$19*$28-$28
|
|
sta.z memset.str
|
|
lda #>COLORRAM+$19*$28-$28
|
|
sta.z memset.str+1
|
|
jsr memset
|
|
jmp __b5
|
|
// cscroll::@5
|
|
__b5:
|
|
// [128] conio_line_text = conio_line_text - $28 -- pbuz1=pbuz1_minus_vbuc1
|
|
sec
|
|
lda.z conio_line_text
|
|
sbc #$28
|
|
sta.z conio_line_text
|
|
lda.z conio_line_text+1
|
|
sbc #0
|
|
sta.z conio_line_text+1
|
|
// [129] conio_line_color = conio_line_color - $28 -- pbuz1=pbuz1_minus_vbuc1
|
|
sec
|
|
lda.z conio_line_color
|
|
sbc #$28
|
|
sta.z conio_line_color
|
|
lda.z conio_line_color+1
|
|
sbc #0
|
|
sta.z conio_line_color+1
|
|
// [130] conio_cursor_y = -- conio_cursor_y -- vbuz1=_dec_vbuz1
|
|
dec.z conio_cursor_y
|
|
jmp __breturn
|
|
// cscroll::@return
|
|
__breturn:
|
|
// [131] return
|
|
rts
|
|
}
|
|
// uctoa
|
|
// Converts unsigned number value to a string representing it in RADIX format.
|
|
// If the leading digits are zero they are not included in the string.
|
|
// - value : The number to be converted to RADIX
|
|
// - buffer : receives the string representing the number and zero-termination.
|
|
// - radix : The radix to convert the number to (from the enum RADIX)
|
|
// void uctoa(__register(X) char value, __zp($10) char *buffer, char radix)
|
|
uctoa: {
|
|
.const max_digits = 2
|
|
.label digit_value = 8
|
|
.label buffer = $10
|
|
.label digit = $12
|
|
.label started = $14
|
|
// [133] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1]
|
|
__b1_from_uctoa:
|
|
// [133] phi uctoa::buffer#11 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1
|
|
lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
sta.z buffer
|
|
lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
sta.z buffer+1
|
|
// [133] phi uctoa::started#2 = 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z started
|
|
// [133] phi uctoa::value#2 = uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy
|
|
// [133] phi uctoa::digit#2 = 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z digit
|
|
jmp __b1
|
|
// uctoa::@1
|
|
__b1:
|
|
// [134] if(uctoa::digit#2<uctoa::max_digits#2-1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z digit
|
|
cmp #max_digits-1
|
|
bcc __b2
|
|
jmp __b3
|
|
// uctoa::@3
|
|
__b3:
|
|
// [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2] -- _deref_pbuz1=pbuc1_derefidx_vbuxx
|
|
lda DIGITS,x
|
|
ldy #0
|
|
sta (buffer),y
|
|
// [136] uctoa::buffer#3 = ++ uctoa::buffer#11 -- pbuz1=_inc_pbuz1
|
|
inc.z buffer
|
|
bne !+
|
|
inc.z buffer+1
|
|
!:
|
|
// [137] *uctoa::buffer#3 = 0 -- _deref_pbuz1=vbuc1
|
|
lda #0
|
|
ldy #0
|
|
sta (buffer),y
|
|
jmp __breturn
|
|
// uctoa::@return
|
|
__breturn:
|
|
// [138] return
|
|
rts
|
|
// uctoa::@2
|
|
__b2:
|
|
// [139] uctoa::digit_value#0 = RADIX_HEXADECIMAL_VALUES_CHAR[uctoa::digit#2] -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy.z digit
|
|
lda RADIX_HEXADECIMAL_VALUES_CHAR,y
|
|
sta.z digit_value
|
|
// [140] if(0!=uctoa::started#2) goto uctoa::@5 -- 0_neq_vbuz1_then_la1
|
|
lda.z started
|
|
bne __b5
|
|
jmp __b7
|
|
// uctoa::@7
|
|
__b7:
|
|
// [141] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5 -- vbuxx_ge_vbuz1_then_la1
|
|
cpx.z digit_value
|
|
bcs __b5
|
|
// [142] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4]
|
|
__b4_from___b7:
|
|
// [142] phi uctoa::buffer#14 = uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy
|
|
// [142] phi uctoa::started#4 = uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy
|
|
// [142] phi uctoa::value#6 = uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy
|
|
jmp __b4
|
|
// uctoa::@4
|
|
__b4:
|
|
// [143] uctoa::digit#1 = ++ uctoa::digit#2 -- vbuz1=_inc_vbuz1
|
|
inc.z digit
|
|
// [133] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1]
|
|
__b1_from___b4:
|
|
// [133] phi uctoa::buffer#11 = uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy
|
|
// [133] phi uctoa::started#2 = uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy
|
|
// [133] phi uctoa::value#2 = uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy
|
|
// [133] phi uctoa::digit#2 = uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy
|
|
jmp __b1
|
|
// uctoa::@5
|
|
__b5:
|
|
// [144] uctoa_append::buffer#0 = uctoa::buffer#11
|
|
// [145] uctoa_append::value#0 = uctoa::value#2
|
|
// [146] uctoa_append::sub#0 = uctoa::digit_value#0
|
|
// [147] call uctoa_append
|
|
// [192] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append]
|
|
uctoa_append_from___b5:
|
|
jsr uctoa_append
|
|
// [148] uctoa_append::return#0 = uctoa_append::value#2
|
|
jmp __b6
|
|
// uctoa::@6
|
|
__b6:
|
|
// [149] uctoa::value#0 = uctoa_append::return#0
|
|
// [150] uctoa::buffer#4 = ++ uctoa::buffer#11 -- pbuz1=_inc_pbuz1
|
|
inc.z buffer
|
|
bne !+
|
|
inc.z buffer+1
|
|
!:
|
|
// [142] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4]
|
|
__b4_from___b6:
|
|
// [142] phi uctoa::buffer#14 = uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy
|
|
// [142] phi uctoa::started#4 = 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z started
|
|
// [142] phi uctoa::value#6 = uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy
|
|
jmp __b4
|
|
}
|
|
// printf_number_buffer
|
|
// Print the contents of the number buffer using a specific format.
|
|
// This handles minimum length, zero-filling, and left/right justification from the format
|
|
// void printf_number_buffer(void (*putc)(char), __zp(8) char buffer_sign, char *buffer_digits, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
|
printf_number_buffer: {
|
|
.label buffer_digits = printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
.label __19 = $e
|
|
.label buffer_sign = 8
|
|
// [152] phi from printf_number_buffer to printf_number_buffer::@4 [phi:printf_number_buffer->printf_number_buffer::@4]
|
|
__b4_from_printf_number_buffer:
|
|
jmp __b4
|
|
// printf_number_buffer::@4
|
|
__b4:
|
|
// [153] call strlen
|
|
// [199] phi from printf_number_buffer::@4 to strlen [phi:printf_number_buffer::@4->strlen]
|
|
strlen_from___b4:
|
|
jsr strlen
|
|
// [154] strlen::return#2 = strlen::len#2
|
|
jmp __b9
|
|
// printf_number_buffer::@9
|
|
__b9:
|
|
// [155] printf_number_buffer::$19 = strlen::return#2
|
|
// [156] printf_number_buffer::len#0 = (signed char)printf_number_buffer::$19 -- vbsxx=_sbyte_vwuz1
|
|
// There is a minimum length - work out the padding
|
|
ldx.z __19
|
|
// [157] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@8 -- 0_eq_vbuz1_then_la1
|
|
lda.z buffer_sign
|
|
beq __b8_from___b9
|
|
jmp __b5
|
|
// printf_number_buffer::@5
|
|
__b5:
|
|
// [158] printf_number_buffer::len#1 = ++ printf_number_buffer::len#0 -- vbsxx=_inc_vbsxx
|
|
inx
|
|
// [159] phi from printf_number_buffer::@5 printf_number_buffer::@9 to printf_number_buffer::@8 [phi:printf_number_buffer::@5/printf_number_buffer::@9->printf_number_buffer::@8]
|
|
__b8_from___b5:
|
|
__b8_from___b9:
|
|
// [159] phi printf_number_buffer::len#2 = printf_number_buffer::len#1 [phi:printf_number_buffer::@5/printf_number_buffer::@9->printf_number_buffer::@8#0] -- register_copy
|
|
jmp __b8
|
|
// printf_number_buffer::@8
|
|
__b8:
|
|
// [160] printf_number_buffer::padding#1 = (signed char)printf_uchar::format_min_length#0 - printf_number_buffer::len#2 -- vbsaa=vbsc1_minus_vbsxx
|
|
txa
|
|
eor #$ff
|
|
sec
|
|
adc #printf_uchar.format_min_length
|
|
// [161] if(printf_number_buffer::padding#1>=0) goto printf_number_buffer::@11 -- vbsaa_ge_0_then_la1
|
|
cmp #0
|
|
bpl __b11_from___b8
|
|
// [163] phi from printf_number_buffer::@8 to printf_number_buffer::@1 [phi:printf_number_buffer::@8->printf_number_buffer::@1]
|
|
__b1_from___b8:
|
|
// [163] phi printf_number_buffer::padding#10 = 0 [phi:printf_number_buffer::@8->printf_number_buffer::@1#0] -- vbsaa=vbsc1
|
|
lda #0
|
|
jmp __b1
|
|
// [162] phi from printf_number_buffer::@8 to printf_number_buffer::@11 [phi:printf_number_buffer::@8->printf_number_buffer::@11]
|
|
__b11_from___b8:
|
|
jmp __b11
|
|
// printf_number_buffer::@11
|
|
__b11:
|
|
// [163] phi from printf_number_buffer::@11 to printf_number_buffer::@1 [phi:printf_number_buffer::@11->printf_number_buffer::@1]
|
|
__b1_from___b11:
|
|
// [163] phi printf_number_buffer::padding#10 = printf_number_buffer::padding#1 [phi:printf_number_buffer::@11->printf_number_buffer::@1#0] -- register_copy
|
|
jmp __b1
|
|
// printf_number_buffer::@1
|
|
__b1:
|
|
jmp __b10
|
|
// printf_number_buffer::@10
|
|
__b10:
|
|
// [164] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@6 -- 0_neq_vbsaa_then_la1
|
|
cmp #0
|
|
bne __b6
|
|
jmp __b2
|
|
// printf_number_buffer::@6
|
|
__b6:
|
|
// [165] printf_padding::length#0 = (char)printf_number_buffer::padding#10 -- vbuz1=vbuaa
|
|
sta.z printf_padding.length
|
|
// [166] call printf_padding
|
|
// [205] phi from printf_number_buffer::@6 to printf_padding [phi:printf_number_buffer::@6->printf_padding]
|
|
printf_padding_from___b6:
|
|
jsr printf_padding
|
|
jmp __b2
|
|
// printf_number_buffer::@2
|
|
__b2:
|
|
// [167] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@3 -- 0_eq_vbuz1_then_la1
|
|
lda.z buffer_sign
|
|
beq __b3_from___b2
|
|
jmp __b7
|
|
// printf_number_buffer::@7
|
|
__b7:
|
|
// [168] stackpush(char) = printf_number_buffer::buffer_sign#0 -- _stackpushbyte_=vbuz1
|
|
lda.z buffer_sign
|
|
pha
|
|
// [169] callexecute cputc -- call_vprc1
|
|
jsr cputc
|
|
// sideeffect stackpullpadding(1) -- _stackpullpadding_1
|
|
pla
|
|
// [171] phi from printf_number_buffer::@2 printf_number_buffer::@7 to printf_number_buffer::@3 [phi:printf_number_buffer::@2/printf_number_buffer::@7->printf_number_buffer::@3]
|
|
__b3_from___b2:
|
|
__b3_from___b7:
|
|
jmp __b3
|
|
// printf_number_buffer::@3
|
|
__b3:
|
|
// [172] call printf_str
|
|
// [103] phi from printf_number_buffer::@3 to printf_str [phi:printf_number_buffer::@3->printf_str]
|
|
printf_str_from___b3:
|
|
// [103] phi printf_str::putc#6 = printf_uchar::putc#0 [phi:printf_number_buffer::@3->printf_str#0] -- pprz1=pprc1
|
|
lda #<printf_uchar.putc
|
|
sta.z printf_str.putc
|
|
lda #>printf_uchar.putc
|
|
sta.z printf_str.putc+1
|
|
// [103] phi printf_str::s#6 = printf_number_buffer::buffer_digits#0 [phi:printf_number_buffer::@3->printf_str#1] -- pbuz1=pbuc1
|
|
lda #<buffer_digits
|
|
sta.z printf_str.s
|
|
lda #>buffer_digits
|
|
sta.z printf_str.s+1
|
|
jsr printf_str
|
|
jmp __breturn
|
|
// printf_number_buffer::@return
|
|
__breturn:
|
|
// [173] return
|
|
rts
|
|
}
|
|
// memcpy
|
|
// Copy block of memory (forwards)
|
|
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
|
// void * memcpy(__zp(4) void *destination, __zp(2) void *source, unsigned int num)
|
|
memcpy: {
|
|
.label src_end = 6
|
|
.label dst = 4
|
|
.label src = 2
|
|
.label source = 2
|
|
.label destination = 4
|
|
// [175] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 -- pbuz1=pbuz2_plus_vwuc1
|
|
lda.z source
|
|
clc
|
|
adc #<$19*$28-$28
|
|
sta.z src_end
|
|
lda.z source+1
|
|
adc #>$19*$28-$28
|
|
sta.z src_end+1
|
|
// [176] memcpy::src#4 = (char *)memcpy::source#2
|
|
// [177] memcpy::dst#4 = (char *)memcpy::destination#2
|
|
// [178] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1]
|
|
__b1_from_memcpy:
|
|
__b1_from___b2:
|
|
// [178] phi memcpy::dst#2 = memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy
|
|
// [178] phi memcpy::src#2 = memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy
|
|
jmp __b1
|
|
// memcpy::@1
|
|
__b1:
|
|
// [179] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1
|
|
lda.z src+1
|
|
cmp.z src_end+1
|
|
bne __b2
|
|
lda.z src
|
|
cmp.z src_end
|
|
bne __b2
|
|
jmp __breturn
|
|
// memcpy::@return
|
|
__breturn:
|
|
// [180] return
|
|
rts
|
|
// memcpy::@2
|
|
__b2:
|
|
// [181] *memcpy::dst#2 = *memcpy::src#2 -- _deref_pbuz1=_deref_pbuz2
|
|
ldy #0
|
|
lda (src),y
|
|
ldy #0
|
|
sta (dst),y
|
|
// [182] memcpy::dst#1 = ++ memcpy::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
// [183] memcpy::src#1 = ++ memcpy::src#2 -- pbuz1=_inc_pbuz1
|
|
inc.z src
|
|
bne !+
|
|
inc.z src+1
|
|
!:
|
|
jmp __b1_from___b2
|
|
}
|
|
// memset
|
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
|
// void * memset(__zp(2) void *str, __register(X) char c, unsigned int num)
|
|
memset: {
|
|
.label end = 4
|
|
.label dst = 2
|
|
.label str = 2
|
|
jmp __b1
|
|
// memset::@1
|
|
__b1:
|
|
// [185] memset::end#0 = (char *)memset::str#3 + $28 -- pbuz1=pbuz2_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z str
|
|
sta.z end
|
|
lda #0
|
|
adc.z str+1
|
|
sta.z end+1
|
|
// [186] memset::dst#4 = (char *)memset::str#3
|
|
// [187] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b3:
|
|
// [187] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
|
|
jmp __b2
|
|
// memset::@2
|
|
__b2:
|
|
// [188] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
|
|
lda.z dst+1
|
|
cmp.z end+1
|
|
bne __b3
|
|
lda.z dst
|
|
cmp.z end
|
|
bne __b3
|
|
jmp __breturn
|
|
// memset::@return
|
|
__breturn:
|
|
// [189] return
|
|
rts
|
|
// memset::@3
|
|
__b3:
|
|
// [190] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuxx
|
|
txa
|
|
ldy #0
|
|
sta (dst),y
|
|
// [191] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
jmp __b2_from___b3
|
|
}
|
|
// uctoa_append
|
|
// Used to convert a single digit of an unsigned number value to a string representation
|
|
// Counts a single digit up from '0' as long as the value is larger than sub.
|
|
// Each time the digit is increased sub is subtracted from value.
|
|
// - buffer : pointer to the char that receives the digit
|
|
// - value : The value where the digit will be derived from
|
|
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
|
|
// (For decimal the subs used are 10000, 1000, 100, 10, 1)
|
|
// returns : the value reduced by sub * digit so that it is less than sub.
|
|
// __register(X) char uctoa_append(__zp($10) char *buffer, __register(X) char value, __zp(8) char sub)
|
|
uctoa_append: {
|
|
.label buffer = $10
|
|
.label sub = 8
|
|
// [193] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1]
|
|
__b1_from_uctoa_append:
|
|
// [193] phi uctoa_append::digit#2 = 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
// [193] phi uctoa_append::value#2 = uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy
|
|
jmp __b1
|
|
// uctoa_append::@1
|
|
__b1:
|
|
// [194] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2 -- vbuxx_ge_vbuz1_then_la1
|
|
cpx.z sub
|
|
bcs __b2
|
|
jmp __b3
|
|
// uctoa_append::@3
|
|
__b3:
|
|
// [195] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2] -- _deref_pbuz1=pbuc1_derefidx_vbuyy
|
|
lda DIGITS,y
|
|
ldy #0
|
|
sta (buffer),y
|
|
jmp __breturn
|
|
// uctoa_append::@return
|
|
__breturn:
|
|
// [196] return
|
|
rts
|
|
// uctoa_append::@2
|
|
__b2:
|
|
// [197] uctoa_append::digit#1 = ++ uctoa_append::digit#2 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [198] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0 -- vbuxx=vbuxx_minus_vbuz1
|
|
txa
|
|
sec
|
|
sbc.z sub
|
|
tax
|
|
// [193] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1]
|
|
__b1_from___b2:
|
|
// [193] phi uctoa_append::digit#2 = uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy
|
|
// [193] phi uctoa_append::value#2 = uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// strlen
|
|
// Computes the length of the string str up to but not including the terminating null character.
|
|
// __zp($e) unsigned int strlen(__zp($10) char *str)
|
|
strlen: {
|
|
.label len = $e
|
|
.label str = $10
|
|
.label return = $e
|
|
// [200] phi from strlen to strlen::@1 [phi:strlen->strlen::@1]
|
|
__b1_from_strlen:
|
|
// [200] phi strlen::len#2 = 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z len
|
|
lda #>0
|
|
sta.z len+1
|
|
// [200] phi strlen::str#2 = printf_number_buffer::buffer_digits#0 [phi:strlen->strlen::@1#1] -- pbuz1=pbuc1
|
|
lda #<printf_number_buffer.buffer_digits
|
|
sta.z str
|
|
lda #>printf_number_buffer.buffer_digits
|
|
sta.z str+1
|
|
jmp __b1
|
|
// strlen::@1
|
|
__b1:
|
|
// [201] if(0!=*strlen::str#2) goto strlen::@2 -- 0_neq__deref_pbuz1_then_la1
|
|
ldy #0
|
|
lda (str),y
|
|
cmp #0
|
|
bne __b2
|
|
jmp __breturn
|
|
// strlen::@return
|
|
__breturn:
|
|
// [202] return
|
|
rts
|
|
// strlen::@2
|
|
__b2:
|
|
// [203] strlen::len#1 = ++ strlen::len#2 -- vwuz1=_inc_vwuz1
|
|
inc.z len
|
|
bne !+
|
|
inc.z len+1
|
|
!:
|
|
// [204] strlen::str#0 = ++ strlen::str#2 -- pbuz1=_inc_pbuz1
|
|
inc.z str
|
|
bne !+
|
|
inc.z str+1
|
|
!:
|
|
// [200] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1]
|
|
__b1_from___b2:
|
|
// [200] phi strlen::len#2 = strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy
|
|
// [200] phi strlen::str#2 = strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// printf_padding
|
|
// Print a padding char a number of times
|
|
// void printf_padding(void (*putc)(char), char pad, __zp($15) char length)
|
|
printf_padding: {
|
|
.const pad = ' '
|
|
.label i = $12
|
|
.label length = $15
|
|
// [206] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1]
|
|
__b1_from_printf_padding:
|
|
// [206] phi printf_padding::i#2 = 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
jmp __b1
|
|
// printf_padding::@1
|
|
__b1:
|
|
// [207] if(printf_padding::i#2<printf_padding::length#0) goto printf_padding::@2 -- vbuz1_lt_vbuz2_then_la1
|
|
lda.z i
|
|
cmp.z length
|
|
bcc __b2
|
|
jmp __breturn
|
|
// printf_padding::@return
|
|
__breturn:
|
|
// [208] return
|
|
rts
|
|
// printf_padding::@2
|
|
__b2:
|
|
// [209] stackpush(char) = printf_padding::pad#0 -- _stackpushbyte_=vbuc1
|
|
lda #pad
|
|
pha
|
|
// [210] callexecute cputc -- call_vprc1
|
|
jsr cputc
|
|
// sideeffect stackpullpadding(1) -- _stackpullpadding_1
|
|
pla
|
|
jmp __b3
|
|
// printf_padding::@3
|
|
__b3:
|
|
// [212] printf_padding::i#1 = ++ printf_padding::i#2 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [206] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1]
|
|
__b1_from___b3:
|
|
// [206] phi printf_padding::i#2 = printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// File Data
|
|
.segment Data
|
|
// The digits used for numbers
|
|
DIGITS: .text "0123456789abcdef"
|
|
// Values of hexadecimal digits
|
|
RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10
|
|
// Buffer used for stringified number being printed
|
|
printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp __init1
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp toD0181
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b11
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b3
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #0
|
|
Removing instruction ldy.z conio_cursor_x
|
|
Removing instruction lda.z ch
|
|
Removing instruction lda #0
|
|
Removing instruction lda.z ch
|
|
Removing instruction lda #0
|
|
Replacing instruction ldy #0 with TAY
|
|
Removing instruction ldy #0
|
|
Removing instruction lda #>0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Replacing label __b2_from_conio_c64_init with __b1
|
|
Replacing label __b1_from_cputc with __b1
|
|
Replacing label __b1_from___b4 with __b1
|
|
Replacing label __b1_from___b9 with __b1
|
|
Replacing label __b3_from_gotoxy with __b2
|
|
Replacing label __b1 with __b2
|
|
Replacing label __breturn_from___b6 with __breturn
|
|
Replacing label __breturn_from___b4 with __breturn
|
|
Replacing label __breturn_from___b3 with __breturn
|
|
Replacing label __breturn_from___b2 with __breturn
|
|
Replacing label __breturn_from___b1 with __breturn
|
|
Replacing label __b1_from___b2 with __b1
|
|
Replacing label __b8_from___b9 with __b8
|
|
Replacing label __b11_from___b8 with __b1
|
|
Replacing label __b3_from___b2 with __b3
|
|
Replacing label __b1_from___b2 with __b1
|
|
Replacing label __b2_from___b3 with __b2
|
|
Removing instruction __b1_from___init1:
|
|
Removing instruction main_from___b1:
|
|
Removing instruction __b2_from_conio_c64_init:
|
|
Removing instruction __b2:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b1_from_cputc:
|
|
Removing instruction toD0181_from_main:
|
|
Removing instruction toD0181:
|
|
Removing instruction __b1_from___b4:
|
|
Removing instruction __b1_from___b9:
|
|
Removing instruction __b8_from___b7:
|
|
Removing instruction printf_str_from___b8:
|
|
Removing instruction __b3_from_gotoxy:
|
|
Removing instruction __b3:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __b1:
|
|
Removing instruction __breturn_from___b1:
|
|
Removing instruction __breturn_from___b2:
|
|
Removing instruction __breturn_from___b3:
|
|
Removing instruction __breturn_from___b4:
|
|
Removing instruction __breturn_from___b5:
|
|
Removing instruction __breturn_from___b6:
|
|
Removing instruction __b1_from_printf_str:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b1_from_cscroll:
|
|
Removing instruction memcpy_from___b1:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction memcpy_from___b2:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction memset_from___b3:
|
|
Removing instruction __b4_from___b3:
|
|
Removing instruction memset_from___b4:
|
|
Removing instruction __b4_from___b7:
|
|
Removing instruction uctoa_append_from___b5:
|
|
Removing instruction __b4_from_printf_number_buffer:
|
|
Removing instruction strlen_from___b4:
|
|
Removing instruction __b8_from___b5:
|
|
Removing instruction __b8_from___b9:
|
|
Removing instruction __b11_from___b8:
|
|
Removing instruction __b11:
|
|
Removing instruction __b1_from___b11:
|
|
Removing instruction __b10:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b3_from___b7:
|
|
Removing instruction printf_str_from___b3:
|
|
Removing instruction __b1_from_memcpy:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b2_from___b3:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction __init1:
|
|
Removing instruction __b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_conio_c64_init:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b2:
|
|
Removing instruction __b3:
|
|
Removing instruction __b3:
|
|
Removing instruction clrscr_from___b3:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __b4:
|
|
Removing instruction __b10:
|
|
Removing instruction __b1_from___b10:
|
|
Removing instruction __b5:
|
|
Removing instruction printf_str_from___b5:
|
|
Removing instruction __b6:
|
|
Removing instruction printf_str_from___b6:
|
|
Removing instruction __b7:
|
|
Removing instruction printf_uchar_from___b7:
|
|
Removing instruction __b8:
|
|
Removing instruction __b9:
|
|
Removing instruction __b1_from_gotoxy:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_clrscr:
|
|
Removing instruction __b2:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b5:
|
|
Removing instruction __b1_from___b5:
|
|
Removing instruction __b3_from___b4:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b6:
|
|
Removing instruction __b7:
|
|
Removing instruction __b8:
|
|
Removing instruction __b9:
|
|
Removing instruction __b10:
|
|
Removing instruction __breturn_from___b10:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1:
|
|
Removing instruction uctoa_from___b1:
|
|
Removing instruction __b2:
|
|
Removing instruction printf_number_buffer_from___b2:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1:
|
|
Removing instruction __b2:
|
|
Removing instruction __b3:
|
|
Removing instruction __b4:
|
|
Removing instruction __b5:
|
|
Removing instruction __b1_from_uctoa:
|
|
Removing instruction __b3:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b7:
|
|
Removing instruction __b1_from___b4:
|
|
Removing instruction __b6:
|
|
Removing instruction __b4_from___b6:
|
|
Removing instruction __b4:
|
|
Removing instruction __b9:
|
|
Removing instruction __b5:
|
|
Removing instruction __b1_from___b8:
|
|
Removing instruction printf_padding_from___b6:
|
|
Removing instruction __b7:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_uctoa_append:
|
|
Removing instruction __b3:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b1_from_strlen:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b1_from_printf_padding:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b3:
|
|
Removing instruction __b1_from___b3:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Replacing jump to rts with rts in jmp __breturn
|
|
Replacing jump to rts with rts in jmp __breturn
|
|
Replacing jump to rts with rts in jmp __breturn
|
|
Replacing jump to rts with rts in jmp __breturn
|
|
Replacing jump to rts with rts in jmp __breturn
|
|
Replacing jump to rts with rts in jmp __breturn
|
|
Succesful ASM optimization Pass5DoubleJumpElimination
|
|
Relabelling long label __b3_from___b1 to __b2
|
|
Succesful ASM optimization Pass5RelabelLongLabels
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b1
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda.z ch
|
|
Removing instruction lda.z buffer_sign
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
|
|
FINAL SYMBOL TABLE
|
|
__constant char * const COLORRAM = (char *) 55296
|
|
__constant char * const DEFAULT_FONT_MIXED = (char *) 6144
|
|
__constant char * const DEFAULT_SCREEN = (char *) 1024
|
|
__constant char DIGITS[] = "0123456789abcdef"z
|
|
char GETIN()
|
|
__constant char * const GETIN::ch = (char *) 255
|
|
char GETIN::return
|
|
char GETIN::return#0 // reg byte a 20002.0
|
|
char GETIN::return#1 // reg byte a 36667.33333333333
|
|
__constant const char LIGHT_BLUE = $e
|
|
__constant char OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
|
__constant char OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
|
|
__constant char RADIX::BINARY = 2
|
|
__constant char RADIX::DECIMAL = $a
|
|
__constant char RADIX::HEXADECIMAL = $10
|
|
__constant char RADIX::OCTAL = 8
|
|
__constant char RADIX_HEXADECIMAL_VALUES_CHAR[] = { $10 }
|
|
__constant char SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c
|
|
__constant unsigned int STACK_BASE = $103
|
|
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *) 53248
|
|
void __start()
|
|
void clrscr()
|
|
char clrscr::c
|
|
char clrscr::c#1 // reg byte y 20002.0
|
|
char clrscr::c#2 // reg byte y 12501.25
|
|
char clrscr::l
|
|
char clrscr::l#1 // reg byte x 2002.0
|
|
char clrscr::l#2 // reg byte x 333.6666666666667
|
|
char *clrscr::line_cols
|
|
char *clrscr::line_cols#1 // line_cols zp[2]:14 1001.0
|
|
char *clrscr::line_cols#5 // line_cols zp[2]:14 1500.375
|
|
char *clrscr::line_text
|
|
char *clrscr::line_text#1 // line_text zp[2]:16 667.3333333333334
|
|
char *clrscr::line_text#5 // line_text zp[2]:16 1714.7142857142858
|
|
void conio_c64_init()
|
|
__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *) 214
|
|
char conio_c64_init::line
|
|
char conio_c64_init::line#0 // reg byte x 11.0
|
|
char conio_c64_init::line#2 // reg byte x 22.0
|
|
__loadstore char conio_cursor_x // zp[1]:19 1.9480522207792208E7
|
|
__loadstore char conio_cursor_y // zp[1]:9 3.4408602375268817E8
|
|
__loadstore char *conio_line_color // zp[2]:10 2.4285714515384617E8
|
|
__loadstore char *conio_line_text // zp[2]:12 2.4021739357608694E8
|
|
__stackcall void cputc(char c)
|
|
__constant char cputc::OFFSET_STACK_C = 0
|
|
char cputc::c
|
|
char cputc::c#0 // reg byte a 1.500000015E8
|
|
void cputln()
|
|
void cscroll()
|
|
void gotoxy(char x , char y)
|
|
char *gotoxy::$5 // zp[2]:28 202.0
|
|
char *gotoxy::$6 // zp[2]:24 202.0
|
|
unsigned int gotoxy::$7 // zp[2]:24 151.5
|
|
unsigned int gotoxy::$8 // zp[2]:26 202.0
|
|
unsigned int gotoxy::$9 // zp[2]:24 202.0
|
|
unsigned int gotoxy::line_offset
|
|
unsigned int gotoxy::line_offset#0 // line_offset zp[2]:24 101.0
|
|
char gotoxy::x
|
|
__constant char gotoxy::x#2 = 0 // x
|
|
char gotoxy::y
|
|
char gotoxy::y#2 // reg byte x 71.0
|
|
char gotoxy::y#4 // reg byte x 67.33333333333333
|
|
int main()
|
|
char main::$6 // zp[1]:20 101.0
|
|
char main::ch
|
|
char main::ch#0 // ch zp[1]:23 1331.625
|
|
char main::current
|
|
char main::current#2 // current zp[1]:22 4220.8
|
|
char main::current#4 // current zp[1]:22 202.0
|
|
int main::return
|
|
__constant char main::s[2] = "'"
|
|
__constant char main::s1[4] = "'($"
|
|
__constant char main::s2[3] = ") "
|
|
char *main::toD0181_gfx
|
|
char main::toD0181_return
|
|
__constant char main::toD0181_return#0 = byte1 (unsigned int)DEFAULT_SCREEN&$3fff*4|byte1 (unsigned int)DEFAULT_FONT_MIXED/4&$f // toD0181_return
|
|
char *main::toD0181_screen
|
|
void * memcpy(void *destination , void *source , unsigned int num)
|
|
void *memcpy::destination
|
|
void *memcpy::destination#2 // destination zp[2]:4
|
|
char *memcpy::dst
|
|
char *memcpy::dst#1 // dst zp[2]:4 1.0000000000001E13
|
|
char *memcpy::dst#2 // dst zp[2]:4 1.0033333333334666E13
|
|
char *memcpy::dst#4 // dst zp[2]:4 2.00000000002E11
|
|
unsigned int memcpy::num
|
|
void *memcpy::return
|
|
void *memcpy::source
|
|
void *memcpy::source#2 // source zp[2]:2
|
|
char *memcpy::src
|
|
char *memcpy::src#1 // src zp[2]:2 2.0000000000002E13
|
|
char *memcpy::src#2 // src zp[2]:2 1.002500000000125E13
|
|
char *memcpy::src#4 // src zp[2]:2 1.00000000001E11
|
|
char *memcpy::src_end
|
|
char *memcpy::src_end#0 // src_end zp[2]:6 1.26250000000025E12
|
|
void * memset(void *str , char c , unsigned int num)
|
|
char memset::c
|
|
char memset::c#4 // reg byte x 1.4285714285715715E12
|
|
char *memset::dst
|
|
char *memset::dst#1 // dst zp[2]:2 2.0000000000002E13
|
|
char *memset::dst#2 // dst zp[2]:2 1.3366666666668332E13
|
|
char *memset::dst#4 // dst zp[2]:2 2.00000000002E11
|
|
char *memset::end
|
|
char *memset::end#0 // end zp[2]:4 1.6833333333336665E12
|
|
unsigned int memset::num
|
|
void *memset::return
|
|
void *memset::str
|
|
void *memset::str#3 // str zp[2]:2
|
|
char petscii_to_screencode(char petscii)
|
|
char petscii_to_screencode::petscii
|
|
char petscii_to_screencode::petscii#0 // reg byte a 1730.4285714285716
|
|
char petscii_to_screencode::return
|
|
char petscii_to_screencode::return#0 // reg byte a 202.0
|
|
char petscii_to_screencode::return#1 // reg byte a 2002.0
|
|
char petscii_to_screencode::return#10 // reg byte a 2035.666666666667
|
|
char petscii_to_screencode::return#3 // reg byte a 2002.0
|
|
char petscii_to_screencode::return#4 // reg byte a 2002.0
|
|
char petscii_to_screencode::return#5 // reg byte a 2002.0
|
|
char petscii_to_screencode::return#6 // reg byte a 2002.0
|
|
__loadstore struct printf_buffer_number printf_buffer = {} // mem[12]
|
|
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
unsigned int printf_number_buffer::$19 // zp[2]:14 10001.0
|
|
struct printf_buffer_number printf_number_buffer::buffer
|
|
char *printf_number_buffer::buffer_digits
|
|
__constant char *printf_number_buffer::buffer_digits#0 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS // buffer_digits
|
|
char printf_number_buffer::buffer_sign
|
|
char printf_number_buffer::buffer_sign#0 // buffer_sign zp[1]:8 1722.4444444444443
|
|
struct printf_format_number printf_number_buffer::format
|
|
char printf_number_buffer::format_justify_left
|
|
char printf_number_buffer::format_min_length
|
|
char printf_number_buffer::format_radix
|
|
char printf_number_buffer::format_sign_always
|
|
char printf_number_buffer::format_upper_case
|
|
char printf_number_buffer::format_zero_padding
|
|
signed char printf_number_buffer::len
|
|
signed char printf_number_buffer::len#0 // reg byte x 15001.5
|
|
signed char printf_number_buffer::len#1 // reg byte x 20002.0
|
|
signed char printf_number_buffer::len#2 // reg byte x 30003.0
|
|
signed char printf_number_buffer::padding
|
|
signed char printf_number_buffer::padding#1 // reg byte a 10001.0
|
|
signed char printf_number_buffer::padding#10 // reg byte a 10001.0
|
|
void (*printf_number_buffer::putc)(char)
|
|
void printf_padding(void (*putc)(char) , char pad , char length)
|
|
char printf_padding::i
|
|
char printf_padding::i#1 // i zp[1]:18 2.0000002E7
|
|
char printf_padding::i#2 // i zp[1]:18 6000000.6
|
|
char printf_padding::length
|
|
char printf_padding::length#0 // length zp[1]:21 1251250.25
|
|
char printf_padding::pad
|
|
__constant char printf_padding::pad#0 = ' ' // pad
|
|
void (*printf_padding::putc)(char)
|
|
void printf_str(void (*putc)(char) , const char *s)
|
|
char printf_str::c
|
|
char printf_str::c#1 // reg byte a 1.0000001E7
|
|
void (*printf_str::putc)(char)
|
|
void (*printf_str::putc#6)(char) // putc zp[2]:16
|
|
const char *printf_str::s
|
|
const char *printf_str::s#0 // s zp[2]:14 1.0000001E7
|
|
const char *printf_str::s#5 // s zp[2]:14 1.5050002E7
|
|
const char *printf_str::s#6 // s zp[2]:14 100001.0
|
|
void printf_uchar(void (*putc)(char) , char uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
|
struct printf_format_number printf_uchar::format
|
|
char printf_uchar::format_justify_left
|
|
char printf_uchar::format_min_length
|
|
__constant char printf_uchar::format_min_length#0 = 2 // format_min_length
|
|
char printf_uchar::format_radix
|
|
char printf_uchar::format_sign_always
|
|
char printf_uchar::format_upper_case
|
|
char printf_uchar::format_zero_padding
|
|
void (*printf_uchar::putc)(char)
|
|
__constant void (*printf_uchar::putc#0)(char) = &cputc // putc
|
|
char printf_uchar::uvalue
|
|
char printf_uchar::uvalue#0 // reg byte x 367.33333333333337
|
|
unsigned int strlen(char *str)
|
|
unsigned int strlen::len
|
|
unsigned int strlen::len#1 // len zp[2]:14 1.0000001E7
|
|
unsigned int strlen::len#2 // len zp[2]:14 5002500.75
|
|
unsigned int strlen::return
|
|
unsigned int strlen::return#2 // return zp[2]:14 20002.0
|
|
char *strlen::str
|
|
char *strlen::str#0 // str zp[2]:16 2.0000002E7
|
|
char *strlen::str#2 // str zp[2]:16 1.0000001E7
|
|
void uctoa(char value , char *buffer , char radix)
|
|
char *uctoa::buffer
|
|
char *uctoa::buffer#11 // buffer zp[2]:16 335000.50000000006
|
|
char *uctoa::buffer#14 // buffer zp[2]:16 1500001.5
|
|
char *uctoa::buffer#3 // buffer zp[2]:16 20002.0
|
|
char *uctoa::buffer#4 // buffer zp[2]:16 2000002.0
|
|
char uctoa::digit
|
|
char uctoa::digit#1 // digit zp[1]:18 2000002.0
|
|
char uctoa::digit#2 // digit zp[1]:18 307692.6153846154
|
|
char uctoa::digit_value
|
|
char uctoa::digit_value#0 // digit_value zp[1]:8 600000.6000000001
|
|
char *uctoa::digit_values
|
|
char uctoa::max_digits
|
|
__constant char uctoa::max_digits#2 = 2 // max_digits
|
|
char uctoa::radix
|
|
char uctoa::started
|
|
char uctoa::started#2 // started zp[1]:20 600000.6000000001
|
|
char uctoa::started#4 // started zp[1]:20 1000001.0
|
|
char uctoa::value
|
|
char uctoa::value#0 // reg byte x 1000001.0
|
|
char uctoa::value#1 // reg byte x 5501.0
|
|
char uctoa::value#2 // reg byte x 670001.0000000001
|
|
char uctoa::value#6 // reg byte x 1500001.5
|
|
char uctoa_append(char *buffer , char value , char sub)
|
|
char *uctoa_append::buffer
|
|
char *uctoa_append::buffer#0 // buffer zp[2]:16 1375000.25
|
|
char uctoa_append::digit
|
|
char uctoa_append::digit#1 // reg byte y 1.0000000001E10
|
|
char uctoa_append::digit#2 // reg byte y 1.00050000015E10
|
|
char uctoa_append::return
|
|
char uctoa_append::return#0 // reg byte x 2000002.0
|
|
char uctoa_append::sub
|
|
char uctoa_append::sub#0 // sub zp[1]:8 3.3335000005E9
|
|
char uctoa_append::value
|
|
char uctoa_append::value#0 // reg byte x 3666667.333333333
|
|
char uctoa_append::value#1 // reg byte x 2.0000000002E10
|
|
char uctoa_append::value#2 // reg byte x 5.001833334166666E9
|
|
|
|
reg byte x [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
|
zp[1]:22 [ main::current#2 main::current#4 ]
|
|
reg byte x [ gotoxy::y#4 gotoxy::y#2 ]
|
|
reg byte x [ clrscr::l#2 clrscr::l#1 ]
|
|
reg byte y [ clrscr::c#2 clrscr::c#1 ]
|
|
reg byte a [ petscii_to_screencode::return#10 petscii_to_screencode::return#1 petscii_to_screencode::petscii#0 petscii_to_screencode::return#3 petscii_to_screencode::return#4 petscii_to_screencode::return#5 petscii_to_screencode::return#6 ]
|
|
reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
|
|
reg byte x [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
|
|
reg byte a [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
|
|
zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
|
reg byte x [ memset::c#4 ]
|
|
reg byte x [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
|
|
reg byte y [ uctoa_append::digit#2 uctoa_append::digit#1 ]
|
|
zp[2]:16 [ strlen::str#2 strlen::str#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 printf_str::putc#6 clrscr::line_text#5 clrscr::line_text#1 ]
|
|
zp[2]:14 [ strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 printf_str::s#5 printf_str::s#6 printf_str::s#0 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
|
zp[1]:18 [ printf_padding::i#2 printf_padding::i#1 uctoa::digit#2 uctoa::digit#1 ]
|
|
zp[1]:19 [ conio_cursor_x ]
|
|
zp[1]:9 [ conio_cursor_y ]
|
|
zp[2]:12 [ conio_line_text ]
|
|
zp[2]:10 [ conio_line_color ]
|
|
reg byte a [ cputc::c#0 ]
|
|
reg byte a [ GETIN::return#0 ]
|
|
zp[1]:23 [ main::ch#0 ]
|
|
reg byte a [ petscii_to_screencode::return#0 ]
|
|
zp[1]:20 [ main::$6 uctoa::started#2 uctoa::started#4 ]
|
|
reg byte x [ printf_uchar::uvalue#0 ]
|
|
zp[2]:24 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
|
|
zp[2]:26 [ gotoxy::$8 ]
|
|
zp[2]:28 [ gotoxy::$5 ]
|
|
reg byte a [ GETIN::return#1 ]
|
|
reg byte a [ printf_str::c#1 ]
|
|
zp[1]:8 [ uctoa::digit_value#0 uctoa_append::sub#0 printf_number_buffer::buffer_sign#0 ]
|
|
reg byte x [ uctoa_append::return#0 ]
|
|
zp[1]:21 [ printf_padding::length#0 ]
|
|
zp[2]:6 [ memcpy::src_end#0 ]
|
|
zp[2]:4 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
|
mem[12] [ printf_buffer ]
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
Score: 77544
|
|
|
|
// File Comments
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="cbm-keyboard.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(__start)
|
|
// Global Constants & labels
|
|
.const LIGHT_BLUE = $e
|
|
.const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
|
|
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
|
|
.const STACK_BASE = $103
|
|
.const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c
|
|
/// The VIC-II MOS 6567/6569
|
|
.label VICII = $d000
|
|
/// Color Ram
|
|
.label COLORRAM = $d800
|
|
/// Default address of screen character matrix
|
|
.label DEFAULT_SCREEN = $400
|
|
/// Default address of the chargen font (mixed case)
|
|
.label DEFAULT_FONT_MIXED = $1800
|
|
// The number of bytes on the screen
|
|
// The current cursor x-position
|
|
.label conio_cursor_x = $13
|
|
// The current cursor y-position
|
|
.label conio_cursor_y = 9
|
|
// The current text cursor line start
|
|
.label conio_line_text = $c
|
|
// The current color cursor line start
|
|
.label conio_line_color = $a
|
|
.segment Code
|
|
// __start
|
|
__start: {
|
|
// __start::__init1
|
|
// __ma char conio_cursor_x = 0
|
|
// [1] conio_cursor_x = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z conio_cursor_x
|
|
// __ma char conio_cursor_y = 0
|
|
// [2] conio_cursor_y = 0 -- vbuz1=vbuc1
|
|
sta.z conio_cursor_y
|
|
// __ma char *conio_line_text = CONIO_SCREEN_TEXT
|
|
// [3] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1
|
|
lda #<DEFAULT_SCREEN
|
|
sta.z conio_line_text
|
|
lda #>DEFAULT_SCREEN
|
|
sta.z conio_line_text+1
|
|
// __ma char *conio_line_color = CONIO_SCREEN_COLORS
|
|
// [4] conio_line_color = COLORRAM -- pbuz1=pbuc1
|
|
lda #<COLORRAM
|
|
sta.z conio_line_color
|
|
lda #>COLORRAM
|
|
sta.z conio_line_color+1
|
|
// #pragma constructor_for(conio_c64_init, cputc, clrscr, cscroll)
|
|
// [5] call conio_c64_init
|
|
jsr conio_c64_init
|
|
// [6] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
|
|
// __start::@1
|
|
// [7] call main
|
|
// [27] phi from __start::@1 to main [phi:__start::@1->main]
|
|
jsr main
|
|
// __start::@return
|
|
// [8] return
|
|
rts
|
|
}
|
|
// conio_c64_init
|
|
// Set initial cursor position
|
|
conio_c64_init: {
|
|
// Position cursor at current line
|
|
.label BASIC_CURSOR_LINE = $d6
|
|
// char line = *BASIC_CURSOR_LINE
|
|
// [9] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE -- vbuxx=_deref_pbuc1
|
|
ldx.z BASIC_CURSOR_LINE
|
|
// if(line>=CONIO_HEIGHT)
|
|
// [10] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #$19
|
|
bcc __b1
|
|
// [12] phi from conio_c64_init to conio_c64_init::@1 [phi:conio_c64_init->conio_c64_init::@1]
|
|
// [12] phi conio_c64_init::line#2 = $19-1 [phi:conio_c64_init->conio_c64_init::@1#0] -- vbuxx=vbuc1
|
|
ldx #$19-1
|
|
// [11] phi from conio_c64_init to conio_c64_init::@2 [phi:conio_c64_init->conio_c64_init::@2]
|
|
// conio_c64_init::@2
|
|
// [12] phi from conio_c64_init::@2 to conio_c64_init::@1 [phi:conio_c64_init::@2->conio_c64_init::@1]
|
|
// [12] phi conio_c64_init::line#2 = conio_c64_init::line#0 [phi:conio_c64_init::@2->conio_c64_init::@1#0] -- register_copy
|
|
// conio_c64_init::@1
|
|
__b1:
|
|
// gotoxy(0, line)
|
|
// [13] gotoxy::y#2 = conio_c64_init::line#2
|
|
// [14] call gotoxy
|
|
jsr gotoxy
|
|
// conio_c64_init::@return
|
|
// }
|
|
// [15] return
|
|
rts
|
|
}
|
|
// cputc
|
|
// Output one character at the current cursor position
|
|
// Moves the cursor forward. Scrolls the entire screen if needed
|
|
// void cputc(__register(A) char c)
|
|
cputc: {
|
|
.const OFFSET_STACK_C = 0
|
|
// [16] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) -- vbuaa=_stackidxbyte_vbuc1
|
|
tsx
|
|
lda STACK_BASE+OFFSET_STACK_C,x
|
|
// if(c=='\n')
|
|
// [17] if(cputc::c#0==' ') goto cputc::@1 -- vbuaa_eq_vbuc1_then_la1
|
|
cmp #'\n'
|
|
beq __b1
|
|
// cputc::@2
|
|
// conio_line_text[conio_cursor_x] = c
|
|
// [18] conio_line_text[conio_cursor_x] = cputc::c#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z conio_cursor_x
|
|
sta (conio_line_text),y
|
|
// conio_line_color[conio_cursor_x] = conio_textcolor
|
|
// [19] conio_line_color[conio_cursor_x] = LIGHT_BLUE -- pbuz1_derefidx_vbuz2=vbuc1
|
|
lda #LIGHT_BLUE
|
|
sta (conio_line_color),y
|
|
// if(++conio_cursor_x==CONIO_WIDTH)
|
|
// [20] conio_cursor_x = ++ conio_cursor_x -- vbuz1=_inc_vbuz1
|
|
inc.z conio_cursor_x
|
|
// [21] if(conio_cursor_x!=$28) goto cputc::@return -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$28
|
|
cmp.z conio_cursor_x
|
|
bne __breturn
|
|
// [22] phi from cputc::@2 to cputc::@3 [phi:cputc::@2->cputc::@3]
|
|
// cputc::@3
|
|
// cputln()
|
|
// [23] call cputln
|
|
jsr cputln
|
|
// cputc::@return
|
|
__breturn:
|
|
// }
|
|
// [24] return
|
|
rts
|
|
// [25] phi from cputc to cputc::@1 [phi:cputc->cputc::@1]
|
|
// cputc::@1
|
|
__b1:
|
|
// cputln()
|
|
// [26] call cputln
|
|
jsr cputln
|
|
rts
|
|
}
|
|
// main
|
|
// Show the currently pressed key
|
|
main: {
|
|
.const toD0181_return = (>(DEFAULT_SCREEN&$3fff)*4)|(>DEFAULT_FONT_MIXED)/4&$f
|
|
.label __6 = $14
|
|
.label ch = $17
|
|
.label current = $16
|
|
// [28] phi from main to main::toD0181 [phi:main->main::toD0181]
|
|
// main::toD0181
|
|
// main::@3
|
|
// VICII->MEMORY = toD018(DEFAULT_SCREEN, DEFAULT_FONT_MIXED)
|
|
// [29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #toD0181_return
|
|
sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY
|
|
// clrscr()
|
|
// [30] call clrscr
|
|
// [71] phi from main::@3 to clrscr [phi:main::@3->clrscr]
|
|
jsr clrscr
|
|
// [31] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
|
|
// [31] phi main::current#2 = 0 [phi:main::@3->main::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z current
|
|
// [31] phi from main::@4 main::@9 to main::@1 [phi:main::@4/main::@9->main::@1]
|
|
// [31] phi main::current#2 = main::current#2 [phi:main::@4/main::@9->main::@1#0] -- register_copy
|
|
// main::@1
|
|
__b1:
|
|
// char ch = GETIN()
|
|
// [32] call GETIN
|
|
jsr GETIN
|
|
// [33] GETIN::return#0 = GETIN::return#1
|
|
// main::@4
|
|
// [34] main::ch#0 = GETIN::return#0 -- vbuz1=vbuaa
|
|
sta.z ch
|
|
// if(ch && ch!=current)
|
|
// [35] if(0==main::ch#0) goto main::@1 -- 0_eq_vbuz1_then_la1
|
|
beq __b1
|
|
// main::@10
|
|
// [36] if(main::ch#0!=main::current#2) goto main::@2 -- vbuz1_neq_vbuz2_then_la1
|
|
cmp.z current
|
|
bne __b2
|
|
// [31] phi from main::@10 to main::@1 [phi:main::@10->main::@1]
|
|
jmp __b1
|
|
// main::@2
|
|
__b2:
|
|
// petscii_to_screencode(ch)
|
|
// [37] petscii_to_screencode::petscii#0 = main::ch#0 -- vbuaa=vbuz1
|
|
lda.z ch
|
|
// [38] call petscii_to_screencode
|
|
jsr petscii_to_screencode
|
|
// [39] petscii_to_screencode::return#0 = petscii_to_screencode::return#10
|
|
// main::@5
|
|
// [40] main::$6 = petscii_to_screencode::return#0 -- vbuz1=vbuaa
|
|
sta.z __6
|
|
// printf("'%c'($%2x) ", petscii_to_screencode(ch), ch)
|
|
// [41] call printf_str
|
|
// [103] phi from main::@5 to printf_str [phi:main::@5->printf_str]
|
|
// [103] phi printf_str::putc#6 = &cputc [phi:main::@5->printf_str#0] -- pprz1=pprc1
|
|
lda #<cputc
|
|
sta.z printf_str.putc
|
|
lda #>cputc
|
|
sta.z printf_str.putc+1
|
|
// [103] phi printf_str::s#6 = main::s [phi:main::@5->printf_str#1] -- pbuz1=pbuc1
|
|
lda #<s
|
|
sta.z printf_str.s
|
|
lda #>s
|
|
sta.z printf_str.s+1
|
|
jsr printf_str
|
|
// main::@6
|
|
// printf("'%c'($%2x) ", petscii_to_screencode(ch), ch)
|
|
// [42] stackpush(char) = main::$6 -- _stackpushbyte_=vbuz1
|
|
lda.z __6
|
|
pha
|
|
// [43] callexecute cputc -- call_vprc1
|
|
jsr cputc
|
|
// sideeffect stackpullpadding(1) -- _stackpullpadding_1
|
|
pla
|
|
// [45] call printf_str
|
|
// [103] phi from main::@6 to printf_str [phi:main::@6->printf_str]
|
|
// [103] phi printf_str::putc#6 = &cputc [phi:main::@6->printf_str#0] -- pprz1=pprc1
|
|
lda #<cputc
|
|
sta.z printf_str.putc
|
|
lda #>cputc
|
|
sta.z printf_str.putc+1
|
|
// [103] phi printf_str::s#6 = main::s1 [phi:main::@6->printf_str#1] -- pbuz1=pbuc1
|
|
lda #<s1
|
|
sta.z printf_str.s
|
|
lda #>s1
|
|
sta.z printf_str.s+1
|
|
jsr printf_str
|
|
// main::@7
|
|
// printf("'%c'($%2x) ", petscii_to_screencode(ch), ch)
|
|
// [46] printf_uchar::uvalue#0 = main::ch#0 -- vbuxx=vbuz1
|
|
ldx.z ch
|
|
// [47] call printf_uchar
|
|
// [112] phi from main::@7 to printf_uchar [phi:main::@7->printf_uchar]
|
|
jsr printf_uchar
|
|
// [48] phi from main::@7 to main::@8 [phi:main::@7->main::@8]
|
|
// main::@8
|
|
// printf("'%c'($%2x) ", petscii_to_screencode(ch), ch)
|
|
// [49] call printf_str
|
|
// [103] phi from main::@8 to printf_str [phi:main::@8->printf_str]
|
|
// [103] phi printf_str::putc#6 = &cputc [phi:main::@8->printf_str#0] -- pprz1=pprc1
|
|
lda #<cputc
|
|
sta.z printf_str.putc
|
|
lda #>cputc
|
|
sta.z printf_str.putc+1
|
|
// [103] phi printf_str::s#6 = main::s2 [phi:main::@8->printf_str#1] -- pbuz1=pbuc1
|
|
lda #<s2
|
|
sta.z printf_str.s
|
|
lda #>s2
|
|
sta.z printf_str.s+1
|
|
jsr printf_str
|
|
// main::@9
|
|
// [50] main::current#4 = main::ch#0 -- vbuz1=vbuz2
|
|
lda.z ch
|
|
sta.z current
|
|
jmp __b1
|
|
.segment Data
|
|
s: .text "'"
|
|
.byte 0
|
|
s1: .text "'($"
|
|
.byte 0
|
|
s2: .text ") "
|
|
.byte 0
|
|
}
|
|
.segment Code
|
|
// gotoxy
|
|
// Set the cursor to the specified position
|
|
// void gotoxy(char x, __register(X) char y)
|
|
gotoxy: {
|
|
.const x = 0
|
|
.label __5 = $1c
|
|
.label __6 = $18
|
|
.label __7 = $18
|
|
.label line_offset = $18
|
|
.label __8 = $1a
|
|
.label __9 = $18
|
|
// if(y>CONIO_HEIGHT)
|
|
// [51] if(gotoxy::y#2<$19+1) goto gotoxy::@3 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #$19+1
|
|
bcc __b2
|
|
// [53] phi from gotoxy to gotoxy::@1 [phi:gotoxy->gotoxy::@1]
|
|
// [53] phi gotoxy::y#4 = 0 [phi:gotoxy->gotoxy::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [52] phi from gotoxy to gotoxy::@3 [phi:gotoxy->gotoxy::@3]
|
|
// gotoxy::@3
|
|
// [53] phi from gotoxy::@3 to gotoxy::@1 [phi:gotoxy::@3->gotoxy::@1]
|
|
// [53] phi gotoxy::y#4 = gotoxy::y#2 [phi:gotoxy::@3->gotoxy::@1#0] -- register_copy
|
|
// gotoxy::@1
|
|
// gotoxy::@2
|
|
__b2:
|
|
// conio_cursor_x = x
|
|
// [54] conio_cursor_x = gotoxy::x#2 -- vbuz1=vbuc1
|
|
lda #x
|
|
sta.z conio_cursor_x
|
|
// conio_cursor_y = y
|
|
// [55] conio_cursor_y = gotoxy::y#4 -- vbuz1=vbuxx
|
|
stx.z conio_cursor_y
|
|
// unsigned int line_offset = (unsigned int)y*CONIO_WIDTH
|
|
// [56] gotoxy::$7 = (unsigned int)gotoxy::y#4 -- vwuz1=_word_vbuxx
|
|
txa
|
|
sta.z __7
|
|
lda #0
|
|
sta.z __7+1
|
|
// [57] gotoxy::$8 = gotoxy::$7 << 2 -- vwuz1=vwuz2_rol_2
|
|
lda.z __7
|
|
asl
|
|
sta.z __8
|
|
lda.z __7+1
|
|
rol
|
|
sta.z __8+1
|
|
asl.z __8
|
|
rol.z __8+1
|
|
// [58] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 -- vwuz1=vwuz2_plus_vwuz1
|
|
clc
|
|
lda.z __9
|
|
adc.z __8
|
|
sta.z __9
|
|
lda.z __9+1
|
|
adc.z __8+1
|
|
sta.z __9+1
|
|
// [59] gotoxy::line_offset#0 = gotoxy::$9 << 3 -- vwuz1=vwuz1_rol_3
|
|
asl.z line_offset
|
|
rol.z line_offset+1
|
|
asl.z line_offset
|
|
rol.z line_offset+1
|
|
asl.z line_offset
|
|
rol.z line_offset+1
|
|
// CONIO_SCREEN_TEXT + line_offset
|
|
// [60] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
|
lda.z line_offset
|
|
clc
|
|
adc #<DEFAULT_SCREEN
|
|
sta.z __5
|
|
lda.z line_offset+1
|
|
adc #>DEFAULT_SCREEN
|
|
sta.z __5+1
|
|
// conio_line_text = CONIO_SCREEN_TEXT + line_offset
|
|
// [61] conio_line_text = gotoxy::$5 -- pbuz1=pbuz2
|
|
lda.z __5
|
|
sta.z conio_line_text
|
|
lda.z __5+1
|
|
sta.z conio_line_text+1
|
|
// CONIO_SCREEN_COLORS + line_offset
|
|
// [62] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz1
|
|
lda.z __6
|
|
clc
|
|
adc #<COLORRAM
|
|
sta.z __6
|
|
lda.z __6+1
|
|
adc #>COLORRAM
|
|
sta.z __6+1
|
|
// conio_line_color = CONIO_SCREEN_COLORS + line_offset
|
|
// [63] conio_line_color = gotoxy::$6 -- pbuz1=pbuz2
|
|
lda.z __6
|
|
sta.z conio_line_color
|
|
lda.z __6+1
|
|
sta.z conio_line_color+1
|
|
// gotoxy::@return
|
|
// }
|
|
// [64] return
|
|
rts
|
|
}
|
|
// cputln
|
|
// Print a newline
|
|
cputln: {
|
|
// conio_line_text += CONIO_WIDTH
|
|
// [65] conio_line_text = conio_line_text + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z conio_line_text
|
|
sta.z conio_line_text
|
|
bcc !+
|
|
inc.z conio_line_text+1
|
|
!:
|
|
// conio_line_color += CONIO_WIDTH
|
|
// [66] conio_line_color = conio_line_color + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z conio_line_color
|
|
sta.z conio_line_color
|
|
bcc !+
|
|
inc.z conio_line_color+1
|
|
!:
|
|
// conio_cursor_x = 0
|
|
// [67] conio_cursor_x = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z conio_cursor_x
|
|
// conio_cursor_y++;
|
|
// [68] conio_cursor_y = ++ conio_cursor_y -- vbuz1=_inc_vbuz1
|
|
inc.z conio_cursor_y
|
|
// cscroll()
|
|
// [69] call cscroll
|
|
jsr cscroll
|
|
// cputln::@return
|
|
// }
|
|
// [70] return
|
|
rts
|
|
}
|
|
// clrscr
|
|
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
|
|
clrscr: {
|
|
.label line_text = $10
|
|
.label line_cols = $e
|
|
// [72] phi from clrscr to clrscr::@1 [phi:clrscr->clrscr::@1]
|
|
// [72] phi clrscr::line_cols#5 = COLORRAM [phi:clrscr->clrscr::@1#0] -- pbuz1=pbuc1
|
|
lda #<COLORRAM
|
|
sta.z line_cols
|
|
lda #>COLORRAM
|
|
sta.z line_cols+1
|
|
// [72] phi clrscr::line_text#5 = DEFAULT_SCREEN [phi:clrscr->clrscr::@1#1] -- pbuz1=pbuc1
|
|
lda #<DEFAULT_SCREEN
|
|
sta.z line_text
|
|
lda #>DEFAULT_SCREEN
|
|
sta.z line_text+1
|
|
// [72] phi clrscr::l#2 = 0 [phi:clrscr->clrscr::@1#2] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// clrscr::@1
|
|
__b1:
|
|
// for( char l=0;l<CONIO_HEIGHT; l++ )
|
|
// [73] if(clrscr::l#2<$19) goto clrscr::@3 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #$19
|
|
bcc __b2
|
|
// clrscr::@2
|
|
// conio_cursor_x = 0
|
|
// [74] conio_cursor_x = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z conio_cursor_x
|
|
// conio_cursor_y = 0
|
|
// [75] conio_cursor_y = 0 -- vbuz1=vbuc1
|
|
sta.z conio_cursor_y
|
|
// conio_line_text = CONIO_SCREEN_TEXT
|
|
// [76] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1
|
|
lda #<DEFAULT_SCREEN
|
|
sta.z conio_line_text
|
|
lda #>DEFAULT_SCREEN
|
|
sta.z conio_line_text+1
|
|
// conio_line_color = CONIO_SCREEN_COLORS
|
|
// [77] conio_line_color = COLORRAM -- pbuz1=pbuc1
|
|
lda #<COLORRAM
|
|
sta.z conio_line_color
|
|
lda #>COLORRAM
|
|
sta.z conio_line_color+1
|
|
// clrscr::@return
|
|
// }
|
|
// [78] return
|
|
rts
|
|
// [79] phi from clrscr::@1 to clrscr::@3 [phi:clrscr::@1->clrscr::@3]
|
|
__b2:
|
|
// [79] phi clrscr::c#2 = 0 [phi:clrscr::@1->clrscr::@3#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
// clrscr::@3
|
|
__b3:
|
|
// for( char c=0;c<CONIO_WIDTH; c++ )
|
|
// [80] if(clrscr::c#2<$28) goto clrscr::@4 -- vbuyy_lt_vbuc1_then_la1
|
|
cpy #$28
|
|
bcc __b4
|
|
// clrscr::@5
|
|
// line_text += CONIO_WIDTH
|
|
// [81] clrscr::line_text#1 = clrscr::line_text#5 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z line_text
|
|
sta.z line_text
|
|
bcc !+
|
|
inc.z line_text+1
|
|
!:
|
|
// line_cols += CONIO_WIDTH
|
|
// [82] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z line_cols
|
|
sta.z line_cols
|
|
bcc !+
|
|
inc.z line_cols+1
|
|
!:
|
|
// for( char l=0;l<CONIO_HEIGHT; l++ )
|
|
// [83] clrscr::l#1 = ++ clrscr::l#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [72] phi from clrscr::@5 to clrscr::@1 [phi:clrscr::@5->clrscr::@1]
|
|
// [72] phi clrscr::line_cols#5 = clrscr::line_cols#1 [phi:clrscr::@5->clrscr::@1#0] -- register_copy
|
|
// [72] phi clrscr::line_text#5 = clrscr::line_text#1 [phi:clrscr::@5->clrscr::@1#1] -- register_copy
|
|
// [72] phi clrscr::l#2 = clrscr::l#1 [phi:clrscr::@5->clrscr::@1#2] -- register_copy
|
|
jmp __b1
|
|
// clrscr::@4
|
|
__b4:
|
|
// line_text[c] = ' '
|
|
// [84] clrscr::line_text#5[clrscr::c#2] = ' ' -- pbuz1_derefidx_vbuyy=vbuc1
|
|
lda #' '
|
|
sta (line_text),y
|
|
// line_cols[c] = conio_textcolor
|
|
// [85] clrscr::line_cols#5[clrscr::c#2] = LIGHT_BLUE -- pbuz1_derefidx_vbuyy=vbuc1
|
|
lda #LIGHT_BLUE
|
|
sta (line_cols),y
|
|
// for( char c=0;c<CONIO_WIDTH; c++ )
|
|
// [86] clrscr::c#1 = ++ clrscr::c#2 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [79] phi from clrscr::@4 to clrscr::@3 [phi:clrscr::@4->clrscr::@3]
|
|
// [79] phi clrscr::c#2 = clrscr::c#1 [phi:clrscr::@4->clrscr::@3#0] -- register_copy
|
|
jmp __b3
|
|
}
|
|
// GETIN
|
|
// GETIN. Read byte from default input. (If not keyboard, must call OPEN and CHKIN beforehands.)
|
|
// Return: next byte in buffer or 0 if buffer is empty.
|
|
GETIN: {
|
|
.label ch = $ff
|
|
// asm
|
|
// asm { jsr$ffe4 stach }
|
|
jsr $ffe4
|
|
sta ch
|
|
// return *ch;
|
|
// [88] GETIN::return#1 = *GETIN::ch -- vbuaa=_deref_pbuc1
|
|
// GETIN::@return
|
|
// }
|
|
// [89] return
|
|
rts
|
|
}
|
|
// petscii_to_screencode
|
|
// Convert a PETSCII char to screencode
|
|
// __register(A) char petscii_to_screencode(__register(A) char petscii)
|
|
petscii_to_screencode: {
|
|
// if(petscii<32)
|
|
// [90] if(petscii_to_screencode::petscii#0<$20) goto petscii_to_screencode::@1 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$20
|
|
bcc __b1
|
|
// petscii_to_screencode::@6
|
|
// if(petscii<64)
|
|
// [91] if(petscii_to_screencode::petscii#0<$40) goto petscii_to_screencode::@return -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$40
|
|
bcc __breturn
|
|
// petscii_to_screencode::@7
|
|
// if(petscii<96)
|
|
// [92] if(petscii_to_screencode::petscii#0<$60) goto petscii_to_screencode::@2 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$60
|
|
bcc __b2
|
|
// petscii_to_screencode::@8
|
|
// if(petscii<128)
|
|
// [93] if(petscii_to_screencode::petscii#0<$80) goto petscii_to_screencode::@3 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$80
|
|
bcc __b3
|
|
// petscii_to_screencode::@9
|
|
// if(petscii<160)
|
|
// [94] if(petscii_to_screencode::petscii#0<$a0) goto petscii_to_screencode::@4 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$a0
|
|
bcc __b4
|
|
// petscii_to_screencode::@10
|
|
// if(petscii<255)
|
|
// [95] if(petscii_to_screencode::petscii#0<$ff) goto petscii_to_screencode::@5 -- vbuaa_lt_vbuc1_then_la1
|
|
cmp #$ff
|
|
bcc __b5
|
|
// [97] phi from petscii_to_screencode::@10 to petscii_to_screencode::@return [phi:petscii_to_screencode::@10->petscii_to_screencode::@return]
|
|
// [97] phi petscii_to_screencode::return#10 = $5e [phi:petscii_to_screencode::@10->petscii_to_screencode::@return#0] -- vbuaa=vbuc1
|
|
lda #$5e
|
|
rts
|
|
// petscii_to_screencode::@5
|
|
__b5:
|
|
// return petscii-128;
|
|
// [96] petscii_to_screencode::return#6 = petscii_to_screencode::petscii#0 - $80 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$80
|
|
// [97] phi from petscii_to_screencode::@1 petscii_to_screencode::@2 petscii_to_screencode::@3 petscii_to_screencode::@4 petscii_to_screencode::@5 petscii_to_screencode::@6 to petscii_to_screencode::@return [phi:petscii_to_screencode::@1/petscii_to_screencode::@2/petscii_to_screencode::@3/petscii_to_screencode::@4/petscii_to_screencode::@5/petscii_to_screencode::@6->petscii_to_screencode::@return]
|
|
// [97] phi petscii_to_screencode::return#10 = petscii_to_screencode::return#1 [phi:petscii_to_screencode::@1/petscii_to_screencode::@2/petscii_to_screencode::@3/petscii_to_screencode::@4/petscii_to_screencode::@5/petscii_to_screencode::@6->petscii_to_screencode::@return#0] -- register_copy
|
|
// petscii_to_screencode::@return
|
|
__breturn:
|
|
// }
|
|
// [98] return
|
|
rts
|
|
// petscii_to_screencode::@4
|
|
__b4:
|
|
// return petscii+64;
|
|
// [99] petscii_to_screencode::return#5 = petscii_to_screencode::petscii#0 + $40 -- vbuaa=vbuaa_plus_vbuc1
|
|
clc
|
|
adc #$40
|
|
rts
|
|
// petscii_to_screencode::@3
|
|
__b3:
|
|
// return petscii-32;
|
|
// [100] petscii_to_screencode::return#4 = petscii_to_screencode::petscii#0 - $20 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$20
|
|
rts
|
|
// petscii_to_screencode::@2
|
|
__b2:
|
|
// return petscii-64;
|
|
// [101] petscii_to_screencode::return#3 = petscii_to_screencode::petscii#0 - $40 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$40
|
|
rts
|
|
// petscii_to_screencode::@1
|
|
__b1:
|
|
// return petscii+128;
|
|
// [102] petscii_to_screencode::return#1 = petscii_to_screencode::petscii#0 + $80 -- vbuaa=vbuaa_plus_vbuc1
|
|
clc
|
|
adc #$80
|
|
rts
|
|
}
|
|
// printf_str
|
|
/// Print a NUL-terminated string
|
|
// void printf_str(__zp($10) void (*putc)(char), __zp($e) const char *s)
|
|
printf_str: {
|
|
.label s = $e
|
|
.label putc = $10
|
|
// [104] phi from printf_str printf_str::@2 to printf_str::@1 [phi:printf_str/printf_str::@2->printf_str::@1]
|
|
// [104] phi printf_str::s#5 = printf_str::s#6 [phi:printf_str/printf_str::@2->printf_str::@1#0] -- register_copy
|
|
// printf_str::@1
|
|
__b1:
|
|
// while(c=*s++)
|
|
// [105] printf_str::c#1 = *printf_str::s#5 -- vbuaa=_deref_pbuz1
|
|
ldy #0
|
|
lda (s),y
|
|
// [106] printf_str::s#0 = ++ printf_str::s#5 -- pbuz1=_inc_pbuz1
|
|
inc.z s
|
|
bne !+
|
|
inc.z s+1
|
|
!:
|
|
// [107] if(0!=printf_str::c#1) goto printf_str::@2 -- 0_neq_vbuaa_then_la1
|
|
cmp #0
|
|
bne __b2
|
|
// printf_str::@return
|
|
// }
|
|
// [108] return
|
|
rts
|
|
// printf_str::@2
|
|
__b2:
|
|
// putc(c)
|
|
// [109] stackpush(char) = printf_str::c#1 -- _stackpushbyte_=vbuaa
|
|
pha
|
|
// [110] callexecute *printf_str::putc#6 -- call__deref_pprz1
|
|
jsr icall2
|
|
// sideeffect stackpullpadding(1) -- _stackpullpadding_1
|
|
pla
|
|
jmp __b1
|
|
// Outside Flow
|
|
icall2:
|
|
jmp (putc)
|
|
}
|
|
// printf_uchar
|
|
// Print an unsigned char using a specific format
|
|
// void printf_uchar(void (*putc)(char), __register(X) char uvalue, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
|
printf_uchar: {
|
|
.label putc = cputc
|
|
.label format_min_length = 2
|
|
// printf_uchar::@1
|
|
// printf_buffer.sign = format.sign_always?'+':0
|
|
// [113] *((char *)&printf_buffer) = 0 -- _deref_pbuc1=vbuc2
|
|
// Handle any sign
|
|
lda #0
|
|
sta printf_buffer
|
|
// uctoa(uvalue, printf_buffer.digits, format.radix)
|
|
// [114] uctoa::value#1 = printf_uchar::uvalue#0
|
|
// [115] call uctoa
|
|
// Format number into buffer
|
|
// [132] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa]
|
|
jsr uctoa
|
|
// printf_uchar::@2
|
|
// printf_number_buffer(putc, printf_buffer, format)
|
|
// [116] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer) -- vbuz1=_deref_pbuc1
|
|
lda printf_buffer
|
|
sta.z printf_number_buffer.buffer_sign
|
|
// [117] call printf_number_buffer
|
|
// Print using format
|
|
// [151] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer]
|
|
jsr printf_number_buffer
|
|
// printf_uchar::@return
|
|
// }
|
|
// [118] return
|
|
rts
|
|
}
|
|
// cscroll
|
|
// Scroll the entire screen if the cursor is beyond the last line
|
|
cscroll: {
|
|
// if(conio_cursor_y==CONIO_HEIGHT)
|
|
// [119] if(conio_cursor_y!=$19) goto cscroll::@return -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$19
|
|
cmp.z conio_cursor_y
|
|
bne __breturn
|
|
// [120] phi from cscroll to cscroll::@1 [phi:cscroll->cscroll::@1]
|
|
// cscroll::@1
|
|
// memcpy(CONIO_SCREEN_TEXT, CONIO_SCREEN_TEXT+CONIO_WIDTH, CONIO_BYTES-CONIO_WIDTH)
|
|
// [121] call memcpy
|
|
// [174] phi from cscroll::@1 to memcpy [phi:cscroll::@1->memcpy]
|
|
// [174] phi memcpy::destination#2 = (void *)DEFAULT_SCREEN [phi:cscroll::@1->memcpy#0] -- pvoz1=pvoc1
|
|
lda #<DEFAULT_SCREEN
|
|
sta.z memcpy.destination
|
|
lda #>DEFAULT_SCREEN
|
|
sta.z memcpy.destination+1
|
|
// [174] phi memcpy::source#2 = (void *)DEFAULT_SCREEN+$28 [phi:cscroll::@1->memcpy#1] -- pvoz1=pvoc1
|
|
lda #<DEFAULT_SCREEN+$28
|
|
sta.z memcpy.source
|
|
lda #>DEFAULT_SCREEN+$28
|
|
sta.z memcpy.source+1
|
|
jsr memcpy
|
|
// [122] phi from cscroll::@1 to cscroll::@2 [phi:cscroll::@1->cscroll::@2]
|
|
// cscroll::@2
|
|
// memcpy(CONIO_SCREEN_COLORS, CONIO_SCREEN_COLORS+CONIO_WIDTH, CONIO_BYTES-CONIO_WIDTH)
|
|
// [123] call memcpy
|
|
// [174] phi from cscroll::@2 to memcpy [phi:cscroll::@2->memcpy]
|
|
// [174] phi memcpy::destination#2 = (void *)COLORRAM [phi:cscroll::@2->memcpy#0] -- pvoz1=pvoc1
|
|
lda #<COLORRAM
|
|
sta.z memcpy.destination
|
|
lda #>COLORRAM
|
|
sta.z memcpy.destination+1
|
|
// [174] phi memcpy::source#2 = (void *)COLORRAM+$28 [phi:cscroll::@2->memcpy#1] -- pvoz1=pvoc1
|
|
lda #<COLORRAM+$28
|
|
sta.z memcpy.source
|
|
lda #>COLORRAM+$28
|
|
sta.z memcpy.source+1
|
|
jsr memcpy
|
|
// [124] phi from cscroll::@2 to cscroll::@3 [phi:cscroll::@2->cscroll::@3]
|
|
// cscroll::@3
|
|
// memset(CONIO_SCREEN_TEXT+CONIO_BYTES-CONIO_WIDTH, ' ', CONIO_WIDTH)
|
|
// [125] call memset
|
|
// [184] phi from cscroll::@3 to memset [phi:cscroll::@3->memset]
|
|
// [184] phi memset::c#4 = ' ' [phi:cscroll::@3->memset#0] -- vbuxx=vbuc1
|
|
ldx #' '
|
|
// [184] phi memset::str#3 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28 [phi:cscroll::@3->memset#1] -- pvoz1=pvoc1
|
|
lda #<DEFAULT_SCREEN+$19*$28-$28
|
|
sta.z memset.str
|
|
lda #>DEFAULT_SCREEN+$19*$28-$28
|
|
sta.z memset.str+1
|
|
jsr memset
|
|
// [126] phi from cscroll::@3 to cscroll::@4 [phi:cscroll::@3->cscroll::@4]
|
|
// cscroll::@4
|
|
// memset(CONIO_SCREEN_COLORS+CONIO_BYTES-CONIO_WIDTH, conio_textcolor, CONIO_WIDTH)
|
|
// [127] call memset
|
|
// [184] phi from cscroll::@4 to memset [phi:cscroll::@4->memset]
|
|
// [184] phi memset::c#4 = LIGHT_BLUE [phi:cscroll::@4->memset#0] -- vbuxx=vbuc1
|
|
ldx #LIGHT_BLUE
|
|
// [184] phi memset::str#3 = (void *)COLORRAM+(unsigned int)$19*$28-$28 [phi:cscroll::@4->memset#1] -- pvoz1=pvoc1
|
|
lda #<COLORRAM+$19*$28-$28
|
|
sta.z memset.str
|
|
lda #>COLORRAM+$19*$28-$28
|
|
sta.z memset.str+1
|
|
jsr memset
|
|
// cscroll::@5
|
|
// conio_line_text -= CONIO_WIDTH
|
|
// [128] conio_line_text = conio_line_text - $28 -- pbuz1=pbuz1_minus_vbuc1
|
|
sec
|
|
lda.z conio_line_text
|
|
sbc #$28
|
|
sta.z conio_line_text
|
|
lda.z conio_line_text+1
|
|
sbc #0
|
|
sta.z conio_line_text+1
|
|
// conio_line_color -= CONIO_WIDTH
|
|
// [129] conio_line_color = conio_line_color - $28 -- pbuz1=pbuz1_minus_vbuc1
|
|
sec
|
|
lda.z conio_line_color
|
|
sbc #$28
|
|
sta.z conio_line_color
|
|
lda.z conio_line_color+1
|
|
sbc #0
|
|
sta.z conio_line_color+1
|
|
// conio_cursor_y--;
|
|
// [130] conio_cursor_y = -- conio_cursor_y -- vbuz1=_dec_vbuz1
|
|
dec.z conio_cursor_y
|
|
// cscroll::@return
|
|
__breturn:
|
|
// }
|
|
// [131] return
|
|
rts
|
|
}
|
|
// uctoa
|
|
// Converts unsigned number value to a string representing it in RADIX format.
|
|
// If the leading digits are zero they are not included in the string.
|
|
// - value : The number to be converted to RADIX
|
|
// - buffer : receives the string representing the number and zero-termination.
|
|
// - radix : The radix to convert the number to (from the enum RADIX)
|
|
// void uctoa(__register(X) char value, __zp($10) char *buffer, char radix)
|
|
uctoa: {
|
|
.const max_digits = 2
|
|
.label digit_value = 8
|
|
.label buffer = $10
|
|
.label digit = $12
|
|
.label started = $14
|
|
// [133] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1]
|
|
// [133] phi uctoa::buffer#11 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1
|
|
lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
sta.z buffer
|
|
lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
sta.z buffer+1
|
|
// [133] phi uctoa::started#2 = 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z started
|
|
// [133] phi uctoa::value#2 = uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy
|
|
// [133] phi uctoa::digit#2 = 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1
|
|
sta.z digit
|
|
// uctoa::@1
|
|
__b1:
|
|
// for( char digit=0; digit<max_digits-1; digit++ )
|
|
// [134] if(uctoa::digit#2<uctoa::max_digits#2-1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z digit
|
|
cmp #max_digits-1
|
|
bcc __b2
|
|
// uctoa::@3
|
|
// *buffer++ = DIGITS[(char)value]
|
|
// [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2] -- _deref_pbuz1=pbuc1_derefidx_vbuxx
|
|
lda DIGITS,x
|
|
ldy #0
|
|
sta (buffer),y
|
|
// *buffer++ = DIGITS[(char)value];
|
|
// [136] uctoa::buffer#3 = ++ uctoa::buffer#11 -- pbuz1=_inc_pbuz1
|
|
inc.z buffer
|
|
bne !+
|
|
inc.z buffer+1
|
|
!:
|
|
// *buffer = 0
|
|
// [137] *uctoa::buffer#3 = 0 -- _deref_pbuz1=vbuc1
|
|
lda #0
|
|
tay
|
|
sta (buffer),y
|
|
// uctoa::@return
|
|
// }
|
|
// [138] return
|
|
rts
|
|
// uctoa::@2
|
|
__b2:
|
|
// unsigned char digit_value = digit_values[digit]
|
|
// [139] uctoa::digit_value#0 = RADIX_HEXADECIMAL_VALUES_CHAR[uctoa::digit#2] -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy.z digit
|
|
lda RADIX_HEXADECIMAL_VALUES_CHAR,y
|
|
sta.z digit_value
|
|
// if (started || value >= digit_value)
|
|
// [140] if(0!=uctoa::started#2) goto uctoa::@5 -- 0_neq_vbuz1_then_la1
|
|
lda.z started
|
|
bne __b5
|
|
// uctoa::@7
|
|
// [141] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5 -- vbuxx_ge_vbuz1_then_la1
|
|
cpx.z digit_value
|
|
bcs __b5
|
|
// [142] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4]
|
|
// [142] phi uctoa::buffer#14 = uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy
|
|
// [142] phi uctoa::started#4 = uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy
|
|
// [142] phi uctoa::value#6 = uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy
|
|
// uctoa::@4
|
|
__b4:
|
|
// for( char digit=0; digit<max_digits-1; digit++ )
|
|
// [143] uctoa::digit#1 = ++ uctoa::digit#2 -- vbuz1=_inc_vbuz1
|
|
inc.z digit
|
|
// [133] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1]
|
|
// [133] phi uctoa::buffer#11 = uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy
|
|
// [133] phi uctoa::started#2 = uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy
|
|
// [133] phi uctoa::value#2 = uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy
|
|
// [133] phi uctoa::digit#2 = uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy
|
|
jmp __b1
|
|
// uctoa::@5
|
|
__b5:
|
|
// uctoa_append(buffer++, value, digit_value)
|
|
// [144] uctoa_append::buffer#0 = uctoa::buffer#11
|
|
// [145] uctoa_append::value#0 = uctoa::value#2
|
|
// [146] uctoa_append::sub#0 = uctoa::digit_value#0
|
|
// [147] call uctoa_append
|
|
// [192] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append]
|
|
jsr uctoa_append
|
|
// uctoa_append(buffer++, value, digit_value)
|
|
// [148] uctoa_append::return#0 = uctoa_append::value#2
|
|
// uctoa::@6
|
|
// value = uctoa_append(buffer++, value, digit_value)
|
|
// [149] uctoa::value#0 = uctoa_append::return#0
|
|
// value = uctoa_append(buffer++, value, digit_value);
|
|
// [150] uctoa::buffer#4 = ++ uctoa::buffer#11 -- pbuz1=_inc_pbuz1
|
|
inc.z buffer
|
|
bne !+
|
|
inc.z buffer+1
|
|
!:
|
|
// [142] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4]
|
|
// [142] phi uctoa::buffer#14 = uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy
|
|
// [142] phi uctoa::started#4 = 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z started
|
|
// [142] phi uctoa::value#6 = uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy
|
|
jmp __b4
|
|
}
|
|
// printf_number_buffer
|
|
// Print the contents of the number buffer using a specific format.
|
|
// This handles minimum length, zero-filling, and left/right justification from the format
|
|
// void printf_number_buffer(void (*putc)(char), __zp(8) char buffer_sign, char *buffer_digits, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
|
printf_number_buffer: {
|
|
.label buffer_digits = printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
|
.label __19 = $e
|
|
.label buffer_sign = 8
|
|
// [152] phi from printf_number_buffer to printf_number_buffer::@4 [phi:printf_number_buffer->printf_number_buffer::@4]
|
|
// printf_number_buffer::@4
|
|
// strlen(buffer.digits)
|
|
// [153] call strlen
|
|
// [199] phi from printf_number_buffer::@4 to strlen [phi:printf_number_buffer::@4->strlen]
|
|
jsr strlen
|
|
// strlen(buffer.digits)
|
|
// [154] strlen::return#2 = strlen::len#2
|
|
// printf_number_buffer::@9
|
|
// [155] printf_number_buffer::$19 = strlen::return#2
|
|
// signed char len = (signed char)strlen(buffer.digits)
|
|
// [156] printf_number_buffer::len#0 = (signed char)printf_number_buffer::$19 -- vbsxx=_sbyte_vwuz1
|
|
// There is a minimum length - work out the padding
|
|
ldx.z __19
|
|
// if(buffer.sign)
|
|
// [157] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@8 -- 0_eq_vbuz1_then_la1
|
|
lda.z buffer_sign
|
|
beq __b8
|
|
// printf_number_buffer::@5
|
|
// len++;
|
|
// [158] printf_number_buffer::len#1 = ++ printf_number_buffer::len#0 -- vbsxx=_inc_vbsxx
|
|
inx
|
|
// [159] phi from printf_number_buffer::@5 printf_number_buffer::@9 to printf_number_buffer::@8 [phi:printf_number_buffer::@5/printf_number_buffer::@9->printf_number_buffer::@8]
|
|
// [159] phi printf_number_buffer::len#2 = printf_number_buffer::len#1 [phi:printf_number_buffer::@5/printf_number_buffer::@9->printf_number_buffer::@8#0] -- register_copy
|
|
// printf_number_buffer::@8
|
|
__b8:
|
|
// padding = (signed char)format.min_length - len
|
|
// [160] printf_number_buffer::padding#1 = (signed char)printf_uchar::format_min_length#0 - printf_number_buffer::len#2 -- vbsaa=vbsc1_minus_vbsxx
|
|
txa
|
|
eor #$ff
|
|
sec
|
|
adc #printf_uchar.format_min_length
|
|
// if(padding<0)
|
|
// [161] if(printf_number_buffer::padding#1>=0) goto printf_number_buffer::@11 -- vbsaa_ge_0_then_la1
|
|
cmp #0
|
|
bpl __b1
|
|
// [163] phi from printf_number_buffer::@8 to printf_number_buffer::@1 [phi:printf_number_buffer::@8->printf_number_buffer::@1]
|
|
// [163] phi printf_number_buffer::padding#10 = 0 [phi:printf_number_buffer::@8->printf_number_buffer::@1#0] -- vbsaa=vbsc1
|
|
lda #0
|
|
// [162] phi from printf_number_buffer::@8 to printf_number_buffer::@11 [phi:printf_number_buffer::@8->printf_number_buffer::@11]
|
|
// printf_number_buffer::@11
|
|
// [163] phi from printf_number_buffer::@11 to printf_number_buffer::@1 [phi:printf_number_buffer::@11->printf_number_buffer::@1]
|
|
// [163] phi printf_number_buffer::padding#10 = printf_number_buffer::padding#1 [phi:printf_number_buffer::@11->printf_number_buffer::@1#0] -- register_copy
|
|
// printf_number_buffer::@1
|
|
__b1:
|
|
// printf_number_buffer::@10
|
|
// if(!format.justify_left && !format.zero_padding && padding)
|
|
// [164] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@6 -- 0_neq_vbsaa_then_la1
|
|
cmp #0
|
|
bne __b6
|
|
jmp __b2
|
|
// printf_number_buffer::@6
|
|
__b6:
|
|
// printf_padding(putc, ' ',(char)padding)
|
|
// [165] printf_padding::length#0 = (char)printf_number_buffer::padding#10 -- vbuz1=vbuaa
|
|
sta.z printf_padding.length
|
|
// [166] call printf_padding
|
|
// [205] phi from printf_number_buffer::@6 to printf_padding [phi:printf_number_buffer::@6->printf_padding]
|
|
jsr printf_padding
|
|
// printf_number_buffer::@2
|
|
__b2:
|
|
// if(buffer.sign)
|
|
// [167] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@3 -- 0_eq_vbuz1_then_la1
|
|
lda.z buffer_sign
|
|
beq __b3
|
|
// printf_number_buffer::@7
|
|
// putc(buffer.sign)
|
|
// [168] stackpush(char) = printf_number_buffer::buffer_sign#0 -- _stackpushbyte_=vbuz1
|
|
pha
|
|
// [169] callexecute cputc -- call_vprc1
|
|
jsr cputc
|
|
// sideeffect stackpullpadding(1) -- _stackpullpadding_1
|
|
pla
|
|
// [171] phi from printf_number_buffer::@2 printf_number_buffer::@7 to printf_number_buffer::@3 [phi:printf_number_buffer::@2/printf_number_buffer::@7->printf_number_buffer::@3]
|
|
// printf_number_buffer::@3
|
|
__b3:
|
|
// printf_str(putc, buffer.digits)
|
|
// [172] call printf_str
|
|
// [103] phi from printf_number_buffer::@3 to printf_str [phi:printf_number_buffer::@3->printf_str]
|
|
// [103] phi printf_str::putc#6 = printf_uchar::putc#0 [phi:printf_number_buffer::@3->printf_str#0] -- pprz1=pprc1
|
|
lda #<printf_uchar.putc
|
|
sta.z printf_str.putc
|
|
lda #>printf_uchar.putc
|
|
sta.z printf_str.putc+1
|
|
// [103] phi printf_str::s#6 = printf_number_buffer::buffer_digits#0 [phi:printf_number_buffer::@3->printf_str#1] -- pbuz1=pbuc1
|
|
lda #<buffer_digits
|
|
sta.z printf_str.s
|
|
lda #>buffer_digits
|
|
sta.z printf_str.s+1
|
|
jsr printf_str
|
|
// printf_number_buffer::@return
|
|
// }
|
|
// [173] return
|
|
rts
|
|
}
|
|
// memcpy
|
|
// Copy block of memory (forwards)
|
|
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
|
// void * memcpy(__zp(4) void *destination, __zp(2) void *source, unsigned int num)
|
|
memcpy: {
|
|
.label src_end = 6
|
|
.label dst = 4
|
|
.label src = 2
|
|
.label source = 2
|
|
.label destination = 4
|
|
// char* src_end = (char*)source+num
|
|
// [175] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 -- pbuz1=pbuz2_plus_vwuc1
|
|
lda.z source
|
|
clc
|
|
adc #<$19*$28-$28
|
|
sta.z src_end
|
|
lda.z source+1
|
|
adc #>$19*$28-$28
|
|
sta.z src_end+1
|
|
// [176] memcpy::src#4 = (char *)memcpy::source#2
|
|
// [177] memcpy::dst#4 = (char *)memcpy::destination#2
|
|
// [178] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1]
|
|
// [178] phi memcpy::dst#2 = memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy
|
|
// [178] phi memcpy::src#2 = memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy
|
|
// memcpy::@1
|
|
__b1:
|
|
// while(src!=src_end)
|
|
// [179] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1
|
|
lda.z src+1
|
|
cmp.z src_end+1
|
|
bne __b2
|
|
lda.z src
|
|
cmp.z src_end
|
|
bne __b2
|
|
// memcpy::@return
|
|
// }
|
|
// [180] return
|
|
rts
|
|
// memcpy::@2
|
|
__b2:
|
|
// *dst++ = *src++
|
|
// [181] *memcpy::dst#2 = *memcpy::src#2 -- _deref_pbuz1=_deref_pbuz2
|
|
ldy #0
|
|
lda (src),y
|
|
sta (dst),y
|
|
// *dst++ = *src++;
|
|
// [182] memcpy::dst#1 = ++ memcpy::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
// [183] memcpy::src#1 = ++ memcpy::src#2 -- pbuz1=_inc_pbuz1
|
|
inc.z src
|
|
bne !+
|
|
inc.z src+1
|
|
!:
|
|
jmp __b1
|
|
}
|
|
// memset
|
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
|
// void * memset(__zp(2) void *str, __register(X) char c, unsigned int num)
|
|
memset: {
|
|
.label end = 4
|
|
.label dst = 2
|
|
.label str = 2
|
|
// memset::@1
|
|
// char* end = (char*)str + num
|
|
// [185] memset::end#0 = (char *)memset::str#3 + $28 -- pbuz1=pbuz2_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z str
|
|
sta.z end
|
|
lda #0
|
|
adc.z str+1
|
|
sta.z end+1
|
|
// [186] memset::dst#4 = (char *)memset::str#3
|
|
// [187] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
|
|
// [187] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
|
|
// memset::@2
|
|
__b2:
|
|
// for(char* dst = str; dst!=end; dst++)
|
|
// [188] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
|
|
lda.z dst+1
|
|
cmp.z end+1
|
|
bne __b3
|
|
lda.z dst
|
|
cmp.z end
|
|
bne __b3
|
|
// memset::@return
|
|
// }
|
|
// [189] return
|
|
rts
|
|
// memset::@3
|
|
__b3:
|
|
// *dst = c
|
|
// [190] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuxx
|
|
txa
|
|
ldy #0
|
|
sta (dst),y
|
|
// for(char* dst = str; dst!=end; dst++)
|
|
// [191] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
jmp __b2
|
|
}
|
|
// uctoa_append
|
|
// Used to convert a single digit of an unsigned number value to a string representation
|
|
// Counts a single digit up from '0' as long as the value is larger than sub.
|
|
// Each time the digit is increased sub is subtracted from value.
|
|
// - buffer : pointer to the char that receives the digit
|
|
// - value : The value where the digit will be derived from
|
|
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
|
|
// (For decimal the subs used are 10000, 1000, 100, 10, 1)
|
|
// returns : the value reduced by sub * digit so that it is less than sub.
|
|
// __register(X) char uctoa_append(__zp($10) char *buffer, __register(X) char value, __zp(8) char sub)
|
|
uctoa_append: {
|
|
.label buffer = $10
|
|
.label sub = 8
|
|
// [193] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1]
|
|
// [193] phi uctoa_append::digit#2 = 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
// [193] phi uctoa_append::value#2 = uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy
|
|
// uctoa_append::@1
|
|
__b1:
|
|
// while (value >= sub)
|
|
// [194] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2 -- vbuxx_ge_vbuz1_then_la1
|
|
cpx.z sub
|
|
bcs __b2
|
|
// uctoa_append::@3
|
|
// *buffer = DIGITS[digit]
|
|
// [195] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2] -- _deref_pbuz1=pbuc1_derefidx_vbuyy
|
|
lda DIGITS,y
|
|
ldy #0
|
|
sta (buffer),y
|
|
// uctoa_append::@return
|
|
// }
|
|
// [196] return
|
|
rts
|
|
// uctoa_append::@2
|
|
__b2:
|
|
// digit++;
|
|
// [197] uctoa_append::digit#1 = ++ uctoa_append::digit#2 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// value -= sub
|
|
// [198] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0 -- vbuxx=vbuxx_minus_vbuz1
|
|
txa
|
|
sec
|
|
sbc.z sub
|
|
tax
|
|
// [193] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1]
|
|
// [193] phi uctoa_append::digit#2 = uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy
|
|
// [193] phi uctoa_append::value#2 = uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// strlen
|
|
// Computes the length of the string str up to but not including the terminating null character.
|
|
// __zp($e) unsigned int strlen(__zp($10) char *str)
|
|
strlen: {
|
|
.label len = $e
|
|
.label str = $10
|
|
.label return = $e
|
|
// [200] phi from strlen to strlen::@1 [phi:strlen->strlen::@1]
|
|
// [200] phi strlen::len#2 = 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z len
|
|
sta.z len+1
|
|
// [200] phi strlen::str#2 = printf_number_buffer::buffer_digits#0 [phi:strlen->strlen::@1#1] -- pbuz1=pbuc1
|
|
lda #<printf_number_buffer.buffer_digits
|
|
sta.z str
|
|
lda #>printf_number_buffer.buffer_digits
|
|
sta.z str+1
|
|
// strlen::@1
|
|
__b1:
|
|
// while(*str)
|
|
// [201] if(0!=*strlen::str#2) goto strlen::@2 -- 0_neq__deref_pbuz1_then_la1
|
|
ldy #0
|
|
lda (str),y
|
|
cmp #0
|
|
bne __b2
|
|
// strlen::@return
|
|
// }
|
|
// [202] return
|
|
rts
|
|
// strlen::@2
|
|
__b2:
|
|
// len++;
|
|
// [203] strlen::len#1 = ++ strlen::len#2 -- vwuz1=_inc_vwuz1
|
|
inc.z len
|
|
bne !+
|
|
inc.z len+1
|
|
!:
|
|
// str++;
|
|
// [204] strlen::str#0 = ++ strlen::str#2 -- pbuz1=_inc_pbuz1
|
|
inc.z str
|
|
bne !+
|
|
inc.z str+1
|
|
!:
|
|
// [200] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1]
|
|
// [200] phi strlen::len#2 = strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy
|
|
// [200] phi strlen::str#2 = strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// printf_padding
|
|
// Print a padding char a number of times
|
|
// void printf_padding(void (*putc)(char), char pad, __zp($15) char length)
|
|
printf_padding: {
|
|
.const pad = ' '
|
|
.label i = $12
|
|
.label length = $15
|
|
// [206] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1]
|
|
// [206] phi printf_padding::i#2 = 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
// printf_padding::@1
|
|
__b1:
|
|
// for(char i=0;i<length; i++)
|
|
// [207] if(printf_padding::i#2<printf_padding::length#0) goto printf_padding::@2 -- vbuz1_lt_vbuz2_then_la1
|
|
lda.z i
|
|
cmp.z length
|
|
bcc __b2
|
|
// printf_padding::@return
|
|
// }
|
|
// [208] return
|
|
rts
|
|
// printf_padding::@2
|
|
__b2:
|
|
// putc(pad)
|
|
// [209] stackpush(char) = printf_padding::pad#0 -- _stackpushbyte_=vbuc1
|
|
lda #pad
|
|
pha
|
|
// [210] callexecute cputc -- call_vprc1
|
|
jsr cputc
|
|
// sideeffect stackpullpadding(1) -- _stackpullpadding_1
|
|
pla
|
|
// printf_padding::@3
|
|
// for(char i=0;i<length; i++)
|
|
// [212] printf_padding::i#1 = ++ printf_padding::i#2 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [206] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1]
|
|
// [206] phi printf_padding::i#2 = printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// File Data
|
|
.segment Data
|
|
// The digits used for numbers
|
|
DIGITS: .text "0123456789abcdef"
|
|
// Values of hexadecimal digits
|
|
RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10
|
|
// Buffer used for stringified number being printed
|
|
printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0
|
|
|