1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-22 16:33:48 +00:00

Added test for rand()

This commit is contained in:
jespergravgaard 2020-05-05 07:49:32 +02:00
parent 36f82d5745
commit ed6df148f7
6 changed files with 15070 additions and 0 deletions

View File

@ -45,6 +45,11 @@ public class TestPrograms {
compileAndCompare("complex/polygon/polygon.c");
}
@Test
public void testRand1() throws IOException, URISyntaxException {
compileAndCompare("rand-1.c");
}
@Test
public void testPrngXorshift() throws IOException, URISyntaxException {
compileAndCompare("prng-xorshift.c");

35
src/test/kc/rand-1.c Normal file
View File

@ -0,0 +1,35 @@
// Test the pseudorandom number generator in stdlib.h
// Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html
// Information https://en.wikipedia.org/wiki/Xorshift
#include <stdlib.h>
#include <stdio.h>
#include <c64.h>
void main() {
clrscr();
textcolor(WHITE);
printf("generating unique randoms...");
unsigned int first = rand();
unsigned long cnt = 0;
textcolor(LIGHT_BLUE);
char col = 3, row = 1;
unsigned int rnd = first;
do {
cnt++;
if((char)cnt==0) {
gotoxy(col,row);
printf("%5u",rnd);
if(++row==25) {
row = 1;
col+=6;
if(col>40-5)
col = 3;
}
}
rnd = rand();
} while(rnd!=first);
gotoxy(28,0);
textcolor(WHITE);
printf("found %lu",cnt);
}

1207
src/test/ref/rand-1.asm Normal file

File diff suppressed because it is too large Load Diff

656
src/test/ref/rand-1.cfg Normal file
View File

@ -0,0 +1,656 @@
@begin: scope:[] from
[0] phi()
to:@1
@1: scope:[] from @begin
[1] (byte) conio_cursor_x ← (byte) 0
[2] (byte) conio_cursor_y ← (byte) 0
[3] (byte*) conio_cursor_text ← (const nomodify byte*) CONIO_SCREEN_TEXT
[4] (byte*) conio_cursor_color ← (const nomodify byte*) CONIO_SCREEN_COLORS
[5] (byte) conio_textcolor ← (const nomodify byte) CONIO_TEXTCOLOR_DEFAULT
to:@2
@2: scope:[] from @1
[6] phi()
[7] call main
to:@end
@end: scope:[] from @2
[8] phi()
(void()) main()
main: scope:[main] from @2
[9] phi()
[10] call clrscr
to:main::@6
main::@6: scope:[main] from main
[11] phi()
[12] call textcolor
to:main::@7
main::@7: scope:[main] from main::@6
[13] phi()
[14] call cputs
to:main::@8
main::@8: scope:[main] from main::@7
[15] phi()
[16] call rand
[17] (word) rand::return#2 ← (word) rand::return#0
to:main::@9
main::@9: scope:[main] from main::@8
[18] (word) main::first#0 ← (word) rand::return#2
[19] call textcolor
to:main::@10
main::@10: scope:[main] from main::@9
[20] (word) main::rnd#5 ← (word) main::first#0
to:main::@1
main::@1: scope:[main] from main::@10 main::@11
[21] (word) main::rnd#2 ← phi( main::@10/(word) main::rnd#5 main::@11/(word) main::rnd#1 )
[21] (byte) main::row#3 ← phi( main::@10/(byte) 1 main::@11/(byte) main::row#7 )
[21] (byte) main::col#3 ← phi( main::@10/(byte) 3 main::@11/(byte) main::col#7 )
[21] (dword) main::cnt#2 ← phi( main::@10/(dword) 0 main::@11/(dword) main::cnt#1 )
[22] (dword) main::cnt#1 ← ++ (dword) main::cnt#2
[23] (byte~) main::$18 ← (byte)(dword) main::cnt#1
[24] if((byte~) main::$18!=(byte) 0) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@1
[25] (byte) gotoxy::x#2 ← (byte) main::col#3
[26] (byte) gotoxy::y#2 ← (byte) main::row#3
[27] call gotoxy
to:main::@12
main::@12: scope:[main] from main::@3
[28] (word) printf_uint::uvalue#0 ← (word) main::rnd#2
[29] call printf_uint
to:main::@13
main::@13: scope:[main] from main::@12
[30] (byte) main::row#1 ← ++ (byte) main::row#3
[31] if((byte) main::row#1!=(byte) $19) goto main::@2
to:main::@4
main::@4: scope:[main] from main::@13
[32] (byte) main::col#1 ← (byte) main::col#3 + (byte) 6
[33] if((byte) main::col#1<(byte)(number) $28-(number) 5+(byte) 1) goto main::@17
to:main::@2
main::@17: scope:[main] from main::@4
[34] phi()
to:main::@2
main::@2: scope:[main] from main::@1 main::@13 main::@17 main::@4
[35] (byte) main::row#7 ← phi( main::@1/(byte) main::row#3 main::@13/(byte) main::row#1 main::@17/(byte) 1 main::@4/(byte) 1 )
[35] (byte) main::col#7 ← phi( main::@1/(byte) main::col#3 main::@13/(byte) main::col#3 main::@17/(byte) main::col#1 main::@4/(byte) 3 )
[36] call rand
[37] (word) rand::return#3 ← (word) rand::return#0
to:main::@11
main::@11: scope:[main] from main::@2
[38] (word) main::rnd#1 ← (word) rand::return#3
[39] if((word) main::rnd#1!=(word) main::first#0) goto main::@1
to:main::@5
main::@5: scope:[main] from main::@11
[40] phi()
[41] call gotoxy
to:main::@14
main::@14: scope:[main] from main::@5
[42] phi()
[43] call textcolor
to:main::@15
main::@15: scope:[main] from main::@14
[44] phi()
[45] call cputs
to:main::@16
main::@16: scope:[main] from main::@15
[46] (dword) printf_ulong::uvalue#0 ← (dword) main::cnt#1
[47] call printf_ulong
to:main::@return
main::@return: scope:[main] from main::@16
[48] return
to:@return
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_upper_case , (byte) printf_ulong::format_radix)
printf_ulong: scope:[printf_ulong] from main::@16
[49] phi()
to:printf_ulong::@1
printf_ulong::@1: scope:[printf_ulong] from printf_ulong
[50] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[51] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0
[52] call ultoa
to:printf_ulong::@2
printf_ulong::@2: scope:[printf_ulong] from printf_ulong::@1
[53] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[54] call printf_number_buffer
to:printf_ulong::@return
printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@2
[55] return
to:@return
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_upper_case , (byte) printf_number_buffer::format_radix)
printf_number_buffer: scope:[printf_number_buffer] from printf_uint::@2 printf_ulong::@2
[56] (byte) printf_number_buffer::format_upper_case#10 ← phi( printf_uint::@2/(const byte) printf_uint::format_upper_case#0 printf_ulong::@2/(const byte) printf_ulong::format_upper_case#0 )
[56] (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_uint::@2/(byte) printf_number_buffer::buffer_sign#1 printf_ulong::@2/(byte) printf_number_buffer::buffer_sign#0 )
[56] (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_uint::@2/(const byte) printf_uint::format_zero_padding#0 printf_ulong::@2/(const byte) printf_ulong::format_zero_padding#0 )
[56] (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_uint::@2/(const byte) printf_uint::format_justify_left#0 printf_ulong::@2/(const byte) printf_ulong::format_justify_left#0 )
[56] (byte) printf_number_buffer::format_min_length#2 ← phi( printf_uint::@2/(const byte) printf_uint::format_min_length#0 printf_ulong::@2/(const byte) printf_ulong::format_min_length#0 )
[57] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1
to:printf_number_buffer::@6
printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer
[58] phi()
[59] call strlen
[60] (word) strlen::return#2 ← (word) strlen::len#2
to:printf_number_buffer::@14
printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@6
[61] (word~) printf_number_buffer::$19 ← (word) strlen::return#2
[62] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19
[63] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13
to:printf_number_buffer::@7
printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@14
[64] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0
to:printf_number_buffer::@13
printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@14 printf_number_buffer::@7
[65] (signed byte) printf_number_buffer::len#2 ← phi( printf_number_buffer::@14/(signed byte) printf_number_buffer::len#0 printf_number_buffer::@7/(signed byte) printf_number_buffer::len#1 )
[66] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2
[67] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21
to:printf_number_buffer::@1
printf_number_buffer::@21: scope:[printf_number_buffer] from printf_number_buffer::@13
[68] phi()
to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@13 printf_number_buffer::@21
[69] (signed byte) printf_number_buffer::padding#10 ← phi( printf_number_buffer/(signed byte) 0 printf_number_buffer::@21/(signed byte) printf_number_buffer::padding#1 printf_number_buffer::@13/(signed byte) 0 )
[70] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2
to:printf_number_buffer::@17
printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@1
[71] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2
to:printf_number_buffer::@16
printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@17
[72] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8
to:printf_number_buffer::@2
printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@16
[73] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10
[74] call printf_padding
to:printf_number_buffer::@2
printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@16 printf_number_buffer::@17 printf_number_buffer::@8
[75] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3
to:printf_number_buffer::@9
printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@2
[76] (byte) cputc::c#2 ← (byte) printf_number_buffer::buffer_sign#10
[77] call cputc
to:printf_number_buffer::@3
printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@2 printf_number_buffer::@9
[78] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4
to:printf_number_buffer::@18
printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@3
[79] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10
to:printf_number_buffer::@4
printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@18
[80] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10
[81] call printf_padding
to:printf_number_buffer::@4
printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@10 printf_number_buffer::@18 printf_number_buffer::@3
[82] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5
to:printf_number_buffer::@11
printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@4
[83] phi()
[84] call strupr
to:printf_number_buffer::@5
printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer::@11 printf_number_buffer::@4
[85] phi()
[86] call cputs
to:printf_number_buffer::@15
printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@5
[87] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return
to:printf_number_buffer::@20
printf_number_buffer::@20: scope:[printf_number_buffer] from printf_number_buffer::@15
[88] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return
to:printf_number_buffer::@19
printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@20
[89] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12
to:printf_number_buffer::@return
printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@19
[90] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10
[91] call printf_padding
to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@12 printf_number_buffer::@15 printf_number_buffer::@19 printf_number_buffer::@20
[92] return
to:@return
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
printf_padding: scope:[printf_padding] from printf_number_buffer::@10 printf_number_buffer::@12 printf_number_buffer::@8
[93] (byte) printf_padding::pad#5 ← phi( printf_number_buffer::@10/(byte) '0' printf_number_buffer::@12/(byte) ' ' printf_number_buffer::@8/(byte) ' ' )
[93] (byte) printf_padding::length#4 ← phi( printf_number_buffer::@10/(byte) printf_padding::length#1 printf_number_buffer::@12/(byte) printf_padding::length#2 printf_number_buffer::@8/(byte) printf_padding::length#0 )
to:printf_padding::@1
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
[94] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 )
[95] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2
to:printf_padding::@return
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
[96] return
to:@return
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
[97] (byte) cputc::c#1 ← (byte) printf_padding::pad#5
[98] call cputc
to:printf_padding::@3
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
[99] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2
to:printf_padding::@1
(void()) cputc((byte) cputc::c)
cputc: scope:[cputc] from cputs::@2 printf_number_buffer::@9 printf_padding::@2
[100] (byte) cputc::c#3 ← phi( cputs::@2/(byte) cputc::c#0 printf_number_buffer::@9/(byte) cputc::c#2 printf_padding::@2/(byte) cputc::c#1 )
[101] if((byte) cputc::c#3==(byte) '
') goto cputc::@1
to:cputc::@2
cputc::@2: scope:[cputc] from cputc
[102] *((byte*) conio_cursor_text) ← (byte) cputc::c#3
[103] (byte*) conio_cursor_text ← ++ (byte*) conio_cursor_text
[104] *((byte*) conio_cursor_color) ← (byte) conio_textcolor
[105] (byte*) conio_cursor_color ← ++ (byte*) conio_cursor_color
[106] (byte) conio_cursor_x ← ++ (byte) conio_cursor_x
[107] if((byte) conio_cursor_x!=(byte) $28) goto cputc::@return
to:cputc::@3
cputc::@3: scope:[cputc] from cputc::@2
[108] (byte) conio_cursor_x ← (byte) 0
[109] (byte) conio_cursor_y ← ++ (byte) conio_cursor_y
[110] call cscroll
to:cputc::@return
cputc::@return: scope:[cputc] from cputc::@1 cputc::@2 cputc::@3
[111] return
to:@return
cputc::@1: scope:[cputc] from cputc
[112] phi()
[113] call cputln
to:cputc::@return
(void()) cputln()
cputln: scope:[cputln] from cputc::@1
[114] (byte*~) cputln::$0 ← (byte*) conio_cursor_text - (byte) conio_cursor_x
[115] (byte*~) cputln::$1 ← (byte*~) cputln::$0 + (byte) $28
[116] (byte*) conio_cursor_text ← (byte*~) cputln::$1
[117] (byte*~) cputln::$2 ← (byte*) conio_cursor_color - (byte) conio_cursor_x
[118] (byte*~) cputln::$3 ← (byte*~) cputln::$2 + (byte) $28
[119] (byte*) conio_cursor_color ← (byte*~) cputln::$3
[120] (byte) conio_cursor_x ← (byte) 0
[121] (byte) conio_cursor_y ← ++ (byte) conio_cursor_y
[122] call cscroll
to:cputln::@return
cputln::@return: scope:[cputln] from cputln
[123] return
to:@return
(void()) cscroll()
cscroll: scope:[cscroll] from cputc::@3 cputln
[124] if((byte) conio_cursor_y!=(byte) $19) goto cscroll::@return
to:cscroll::@1
cscroll::@1: scope:[cscroll] from cscroll
[125] phi()
[126] call memcpy
to:cscroll::@2
cscroll::@2: scope:[cscroll] from cscroll::@1
[127] phi()
[128] call memcpy
to:cscroll::@3
cscroll::@3: scope:[cscroll] from cscroll::@2
[129] phi()
[130] call memset
to:cscroll::@4
cscroll::@4: scope:[cscroll] from cscroll::@3
[131] (byte) memset::c#1 ← (byte) conio_textcolor
[132] call memset
to:cscroll::@5
cscroll::@5: scope:[cscroll] from cscroll::@4
[133] (byte*~) cscroll::$7 ← (byte*) conio_cursor_text - (byte) $28
[134] (byte*) conio_cursor_text ← (byte*~) cscroll::$7
[135] (byte*~) cscroll::$8 ← (byte*) conio_cursor_color - (byte) $28
[136] (byte*) conio_cursor_color ← (byte*~) cscroll::$8
[137] (byte) conio_cursor_y ← -- (byte) conio_cursor_y
to:cscroll::@return
cscroll::@return: scope:[cscroll] from cscroll cscroll::@5
[138] return
to:@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset] from cscroll::@3 cscroll::@4
[139] (byte) memset::c#4 ← phi( cscroll::@3/(byte) ' ' cscroll::@4/(byte) memset::c#1 )
[139] (void*) memset::str#3 ← phi( cscroll::@3/(void*)(const nomodify byte*) CONIO_SCREEN_TEXT+(word)(number) $19*(number) $28-(byte) $28 cscroll::@4/(void*)(const nomodify byte*) CONIO_SCREEN_COLORS+(word)(number) $19*(number) $28-(byte) $28 )
to:memset::@1
memset::@1: scope:[memset] from memset
[140] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (byte) $28
[141] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[142] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
[143] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset::@2
[144] return
to:@return
memset::@3: scope:[memset] from memset::@2
[145] *((byte*) memset::dst#2) ← (byte) memset::c#4
[146] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
to:memset::@2
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
memcpy: scope:[memcpy] from cscroll::@1 cscroll::@2
[147] (void*) memcpy::destination#2 ← phi( cscroll::@1/(void*)(const nomodify byte*) CONIO_SCREEN_TEXT cscroll::@2/(void*)(const nomodify byte*) CONIO_SCREEN_COLORS )
[147] (void*) memcpy::source#2 ← phi( cscroll::@1/(void*)(const nomodify byte*) CONIO_SCREEN_TEXT+(byte) $28 cscroll::@2/(void*)(const nomodify byte*) CONIO_SCREEN_COLORS+(byte) $28 )
[148] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word)(number) $19*(number) $28-(number) $28
[149] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2
[150] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2
to:memcpy::@1
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
[151] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*) memcpy::dst#4 memcpy::@2/(byte*) memcpy::dst#1 )
[151] (byte*) memcpy::src#2 ← phi( memcpy/(byte*) memcpy::src#4 memcpy::@2/(byte*) memcpy::src#1 )
[152] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2
to:memcpy::@return
memcpy::@return: scope:[memcpy] from memcpy::@1
[153] return
to:@return
memcpy::@2: scope:[memcpy] from memcpy::@1
[154] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2)
[155] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2
[156] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2
to:memcpy::@1
(void()) cputs((to_nomodify byte*) cputs::s)
cputs: scope:[cputs] from main::@15 main::@7 printf_number_buffer::@5
[157] (to_nomodify byte*) cputs::s#5 ← phi( main::@15/(const byte*) main::s1 main::@7/(const byte*) main::s printf_number_buffer::@5/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
to:cputs::@1
cputs::@1: scope:[cputs] from cputs cputs::@2
[158] (to_nomodify byte*) cputs::s#4 ← phi( cputs/(to_nomodify byte*) cputs::s#5 cputs::@2/(to_nomodify byte*) cputs::s#0 )
[159] (byte) cputs::c#1 ← *((to_nomodify byte*) cputs::s#4)
[160] (to_nomodify byte*) cputs::s#0 ← ++ (to_nomodify byte*) cputs::s#4
[161] if((byte) 0!=(byte) cputs::c#1) goto cputs::@2
to:cputs::@return
cputs::@return: scope:[cputs] from cputs::@1
[162] return
to:@return
cputs::@2: scope:[cputs] from cputs::@1
[163] (byte) cputc::c#0 ← (byte) cputs::c#1
[164] call cputc
to:cputs::@1
(byte*()) strupr((byte*) strupr::str)
strupr: scope:[strupr] from printf_number_buffer::@11
[165] phi()
to:strupr::@1
strupr::@1: scope:[strupr] from strupr strupr::@3
[166] (byte*) strupr::src#2 ← phi( strupr/(const byte*) strupr::str#0 strupr::@3/(byte*) strupr::src#1 )
[167] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2
to:strupr::@return
strupr::@return: scope:[strupr] from strupr::@1
[168] return
to:@return
strupr::@2: scope:[strupr] from strupr::@1
[169] (byte) toupper::ch#0 ← *((byte*) strupr::src#2)
[170] call toupper
[171] (byte) toupper::return#3 ← (byte) toupper::return#2
to:strupr::@3
strupr::@3: scope:[strupr] from strupr::@2
[172] (byte~) strupr::$0 ← (byte) toupper::return#3
[173] *((byte*) strupr::src#2) ← (byte~) strupr::$0
[174] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2
to:strupr::@1
(byte()) toupper((byte) toupper::ch)
toupper: scope:[toupper] from strupr::@2
[175] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return
to:toupper::@2
toupper::@2: scope:[toupper] from toupper
[176] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1
to:toupper::@return
toupper::@1: scope:[toupper] from toupper::@2
[177] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a'
to:toupper::@return
toupper::@return: scope:[toupper] from toupper toupper::@1 toupper::@2
[178] (byte) toupper::return#2 ← phi( toupper::@1/(byte) toupper::return#0 toupper/(byte) toupper::ch#0 toupper::@2/(byte) toupper::ch#0 )
[179] return
to:@return
(word()) strlen((byte*) strlen::str)
strlen: scope:[strlen] from printf_number_buffer::@6
[180] phi()
to:strlen::@1
strlen::@1: scope:[strlen] from strlen strlen::@2
[181] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 )
[181] (byte*) strlen::str#2 ← phi( strlen/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS strlen::@2/(byte*) strlen::str#0 )
[182] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2
to:strlen::@return
strlen::@return: scope:[strlen] from strlen::@1
[183] return
to:@return
strlen::@2: scope:[strlen] from strlen::@1
[184] (word) strlen::len#1 ← ++ (word) strlen::len#2
[185] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2
to:strlen::@1
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
ultoa: scope:[ultoa] from printf_ulong::@1
[186] phi()
to:ultoa::@1
ultoa::@1: scope:[ultoa] from ultoa ultoa::@4
[187] (byte*) ultoa::buffer#11 ← phi( ultoa::@4/(byte*) ultoa::buffer#14 ultoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[187] (byte) ultoa::started#2 ← phi( ultoa::@4/(byte) ultoa::started#4 ultoa/(byte) 0 )
[187] (dword) ultoa::value#2 ← phi( ultoa::@4/(dword) ultoa::value#6 ultoa/(dword) ultoa::value#1 )
[187] (byte) ultoa::digit#2 ← phi( ultoa::@4/(byte) ultoa::digit#1 ultoa/(byte) 0 )
[188] if((byte) ultoa::digit#2<(const byte) ultoa::max_digits#1-(byte) 1) goto ultoa::@2
to:ultoa::@3
ultoa::@3: scope:[ultoa] from ultoa::@1
[189] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2
[190] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11)
[191] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11
[192] *((byte*) ultoa::buffer#3) ← (byte) 0
to:ultoa::@return
ultoa::@return: scope:[ultoa] from ultoa::@3
[193] return
to:@return
ultoa::@2: scope:[ultoa] from ultoa::@1
[194] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2
[195] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10)
[196] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5
to:ultoa::@7
ultoa::@7: scope:[ultoa] from ultoa::@2
[197] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5
to:ultoa::@4
ultoa::@4: scope:[ultoa] from ultoa::@6 ultoa::@7
[198] (byte*) ultoa::buffer#14 ← phi( ultoa::@7/(byte*) ultoa::buffer#11 ultoa::@6/(byte*) ultoa::buffer#4 )
[198] (byte) ultoa::started#4 ← phi( ultoa::@7/(byte) ultoa::started#2 ultoa::@6/(byte) 1 )
[198] (dword) ultoa::value#6 ← phi( ultoa::@7/(dword) ultoa::value#2 ultoa::@6/(dword) ultoa::value#0 )
[199] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2
to:ultoa::@1
ultoa::@5: scope:[ultoa] from ultoa::@2 ultoa::@7
[200] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11
[201] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2
[202] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0
[203] call ultoa_append
[204] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2
to:ultoa::@6
ultoa::@6: scope:[ultoa] from ultoa::@5
[205] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0
[206] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11
to:ultoa::@4
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
ultoa_append: scope:[ultoa_append] from ultoa::@5
[207] phi()
to:ultoa_append::@1
ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2
[208] (byte) ultoa_append::digit#2 ← phi( ultoa_append/(byte) 0 ultoa_append::@2/(byte) ultoa_append::digit#1 )
[208] (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#0 ultoa_append::@2/(dword) ultoa_append::value#1 )
[209] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2
to:ultoa_append::@3
ultoa_append::@3: scope:[ultoa_append] from ultoa_append::@1
[210] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2)
to:ultoa_append::@return
ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3
[211] return
to:@return
ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1
[212] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2
[213] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0
to:ultoa_append::@1
(byte()) textcolor((byte) textcolor::color)
textcolor: scope:[textcolor] from main::@14 main::@6 main::@9
[214] (byte) textcolor::color#3 ← phi( main::@9/(const nomodify byte) LIGHT_BLUE main::@14/(const nomodify byte) WHITE main::@6/(const nomodify byte) WHITE )
[215] (byte) conio_textcolor ← (byte) textcolor::color#3
to:textcolor::@return
textcolor::@return: scope:[textcolor] from textcolor
[216] return
to:@return
(void()) gotoxy((byte) gotoxy::x , (byte) gotoxy::y)
gotoxy: scope:[gotoxy] from main::@3 main::@5
[217] (byte) gotoxy::x#4 ← phi( main::@3/(byte) gotoxy::x#2 main::@5/(byte) $1c )
[217] (byte) gotoxy::y#4 ← phi( main::@3/(byte) gotoxy::y#2 main::@5/(byte) 0 )
[218] if((byte) gotoxy::y#4<(byte) $19+(byte) 1) goto gotoxy::@3
to:gotoxy::@1
gotoxy::@3: scope:[gotoxy] from gotoxy
[219] phi()
to:gotoxy::@1
gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@3
[220] (byte) gotoxy::y#5 ← phi( gotoxy::@3/(byte) gotoxy::y#4 gotoxy/(byte) 0 )
[221] if((byte) gotoxy::x#4<(byte) $28) goto gotoxy::@4
to:gotoxy::@2
gotoxy::@4: scope:[gotoxy] from gotoxy::@1
[222] phi()
to:gotoxy::@2
gotoxy::@2: scope:[gotoxy] from gotoxy::@1 gotoxy::@4
[223] (byte) gotoxy::x#5 ← phi( gotoxy::@4/(byte) gotoxy::x#4 gotoxy::@1/(byte) 0 )
[224] (byte) conio_cursor_x ← (byte) gotoxy::x#5
[225] (byte) conio_cursor_y ← (byte) gotoxy::y#5
[226] (word~) gotoxy::$8 ← (word)(byte) gotoxy::y#5
[227] (word~) gotoxy::$9 ← (word~) gotoxy::$8 << (byte) 2
[228] (word~) gotoxy::$10 ← (word~) gotoxy::$9 + (word~) gotoxy::$8
[229] (word~) gotoxy::$4 ← (word~) gotoxy::$10 << (byte) 3
[230] (word) gotoxy::offset#0 ← (word~) gotoxy::$4 + (byte) gotoxy::x#5
[231] (byte*~) gotoxy::$6 ← (const nomodify byte*) CONIO_SCREEN_TEXT + (word) gotoxy::offset#0
[232] (byte*) conio_cursor_text ← (byte*~) gotoxy::$6
[233] (byte*~) gotoxy::$7 ← (const nomodify byte*) CONIO_SCREEN_COLORS + (word) gotoxy::offset#0
[234] (byte*) conio_cursor_color ← (byte*~) gotoxy::$7
to:gotoxy::@return
gotoxy::@return: scope:[gotoxy] from gotoxy::@2
[235] return
to:@return
(word()) rand()
rand: scope:[rand] from main::@2 main::@8
[236] (word) rand_state#9 ← phi( main::@2/(word) rand_state#10 main::@8/(word) 1 )
[237] (word~) rand::$0 ← (word) rand_state#9 << (byte) 7
[238] (word) rand_state#1 ← (word) rand_state#9 ^ (word~) rand::$0
[239] (word~) rand::$1 ← (word) rand_state#1 >> (byte) 9
[240] (word) rand_state#2 ← (word) rand_state#1 ^ (word~) rand::$1
[241] (word~) rand::$2 ← (word) rand_state#2 << (byte) 8
[242] (word) rand_state#10 ← (word) rand_state#2 ^ (word~) rand::$2
[243] (word) rand::return#0 ← (word) rand_state#10
to:rand::@return
rand::@return: scope:[rand] from rand
[244] return
to:@return
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_upper_case , (byte) printf_uint::format_radix)
printf_uint: scope:[printf_uint] from main::@12
[245] phi()
to:printf_uint::@1
printf_uint::@1: scope:[printf_uint] from printf_uint
[246] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[247] (word) utoa::value#1 ← (word) printf_uint::uvalue#0
[248] call utoa
to:printf_uint::@2
printf_uint::@2: scope:[printf_uint] from printf_uint::@1
[249] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[250] call printf_number_buffer
to:printf_uint::@return
printf_uint::@return: scope:[printf_uint] from printf_uint::@2
[251] return
to:@return
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
utoa: scope:[utoa] from printf_uint::@1
[252] phi()
to:utoa::@1
utoa::@1: scope:[utoa] from utoa utoa::@4
[253] (byte*) utoa::buffer#11 ← phi( utoa::@4/(byte*) utoa::buffer#14 utoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[253] (byte) utoa::started#2 ← phi( utoa::@4/(byte) utoa::started#4 utoa/(byte) 0 )
[253] (word) utoa::value#2 ← phi( utoa::@4/(word) utoa::value#6 utoa/(word) utoa::value#1 )
[253] (byte) utoa::digit#2 ← phi( utoa::@4/(byte) utoa::digit#1 utoa/(byte) 0 )
[254] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2
to:utoa::@3
utoa::@3: scope:[utoa] from utoa::@1
[255] (byte~) utoa::$11 ← (byte)(word) utoa::value#2
[256] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11)
[257] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11
[258] *((byte*) utoa::buffer#3) ← (byte) 0
to:utoa::@return
utoa::@return: scope:[utoa] from utoa::@3
[259] return
to:@return
utoa::@2: scope:[utoa] from utoa::@1
[260] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1
[261] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10)
[262] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5
to:utoa::@7
utoa::@7: scope:[utoa] from utoa::@2
[263] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5
to:utoa::@4
utoa::@4: scope:[utoa] from utoa::@6 utoa::@7
[264] (byte*) utoa::buffer#14 ← phi( utoa::@7/(byte*) utoa::buffer#11 utoa::@6/(byte*) utoa::buffer#4 )
[264] (byte) utoa::started#4 ← phi( utoa::@7/(byte) utoa::started#2 utoa::@6/(byte) 1 )
[264] (word) utoa::value#6 ← phi( utoa::@7/(word) utoa::value#2 utoa::@6/(word) utoa::value#0 )
[265] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2
to:utoa::@1
utoa::@5: scope:[utoa] from utoa::@2 utoa::@7
[266] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11
[267] (word) utoa_append::value#0 ← (word) utoa::value#2
[268] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0
[269] call utoa_append
[270] (word) utoa_append::return#0 ← (word) utoa_append::value#2
to:utoa::@6
utoa::@6: scope:[utoa] from utoa::@5
[271] (word) utoa::value#0 ← (word) utoa_append::return#0
[272] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11
to:utoa::@4
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
utoa_append: scope:[utoa_append] from utoa::@5
[273] phi()
to:utoa_append::@1
utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
[274] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 )
[274] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 )
[275] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2
to:utoa_append::@3
utoa_append::@3: scope:[utoa_append] from utoa_append::@1
[276] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2)
to:utoa_append::@return
utoa_append::@return: scope:[utoa_append] from utoa_append::@3
[277] return
to:@return
utoa_append::@2: scope:[utoa_append] from utoa_append::@1
[278] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2
[279] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0
to:utoa_append::@1
(void()) clrscr()
clrscr: scope:[clrscr] from main
[280] phi()
to:clrscr::@1
clrscr::@1: scope:[clrscr] from clrscr clrscr::@5
[281] (byte*) clrscr::line_cols#5 ← phi( clrscr/(const nomodify byte*) CONIO_SCREEN_COLORS clrscr::@5/(byte*) clrscr::line_cols#1 )
[281] (byte*) clrscr::line_text#5 ← phi( clrscr/(const nomodify byte*) CONIO_SCREEN_TEXT clrscr::@5/(byte*) clrscr::line_text#1 )
[281] (byte) clrscr::l#2 ← phi( clrscr/(byte) 0 clrscr::@5/(byte) clrscr::l#1 )
[282] if((byte) clrscr::l#2<(byte) $19) goto clrscr::@3
to:clrscr::@2
clrscr::@2: scope:[clrscr] from clrscr::@1
[283] (byte) conio_cursor_x ← (byte) 0
[284] (byte) conio_cursor_y ← (byte) 0
[285] (byte*) conio_cursor_text ← (const nomodify byte*) CONIO_SCREEN_TEXT
[286] (byte*) conio_cursor_color ← (const nomodify byte*) CONIO_SCREEN_COLORS
to:clrscr::@return
clrscr::@return: scope:[clrscr] from clrscr::@2
[287] return
to:@return
clrscr::@3: scope:[clrscr] from clrscr::@1 clrscr::@4
[288] (byte) clrscr::c#2 ← phi( clrscr::@1/(byte) 0 clrscr::@4/(byte) clrscr::c#1 )
[289] if((byte) clrscr::c#2<(byte) $28) goto clrscr::@4
to:clrscr::@5
clrscr::@5: scope:[clrscr] from clrscr::@3
[290] (byte*) clrscr::line_text#1 ← (byte*) clrscr::line_text#5 + (byte) $28
[291] (byte*) clrscr::line_cols#1 ← (byte*) clrscr::line_cols#5 + (byte) $28
[292] (byte) clrscr::l#1 ← ++ (byte) clrscr::l#2
to:clrscr::@1
clrscr::@4: scope:[clrscr] from clrscr::@3
[293] *((byte*) clrscr::line_text#5 + (byte) clrscr::c#2) ← (byte) ' '
[294] *((byte*) clrscr::line_cols#5 + (byte) clrscr::c#2) ← (byte) conio_textcolor
[295] (byte) clrscr::c#1 ← ++ (byte) clrscr::c#2
to:clrscr::@3

12595
src/test/ref/rand-1.log Normal file

File diff suppressed because one or more lines are too long

572
src/test/ref/rand-1.sym Normal file
View File

@ -0,0 +1,572 @@
(label) @1
(label) @2
(label) @begin
(label) @end
(const nomodify byte*) CONIO_SCREEN_COLORS = (byte*) 55296
(const nomodify byte*) CONIO_SCREEN_TEXT = (byte*) 1024
(const nomodify byte) CONIO_TEXTCOLOR_DEFAULT = (byte) $e
(const byte*) DIGITS[] = (byte*) "0123456789abcdef"z
(const nomodify byte) LIGHT_BLUE = (byte) $e
(byte) MOS6526_CIA::INTERRUPT
(byte) MOS6526_CIA::PORT_A
(byte) MOS6526_CIA::PORT_A_DDR
(byte) MOS6526_CIA::PORT_B
(byte) MOS6526_CIA::PORT_B_DDR
(byte) MOS6526_CIA::SERIAL_DATA
(word) MOS6526_CIA::TIMER_A
(byte) MOS6526_CIA::TIMER_A_CONTROL
(word) MOS6526_CIA::TIMER_B
(byte) MOS6526_CIA::TIMER_B_CONTROL
(byte) MOS6526_CIA::TOD_10THS
(byte) MOS6526_CIA::TOD_HOURS
(byte) MOS6526_CIA::TOD_MIN
(byte) MOS6526_CIA::TOD_SEC
(byte) MOS6569_VICII::BG_COLOR
(byte) MOS6569_VICII::BG_COLOR1
(byte) MOS6569_VICII::BG_COLOR2
(byte) MOS6569_VICII::BG_COLOR3
(byte) MOS6569_VICII::BORDER_COLOR
(byte) MOS6569_VICII::CONTROL1
(byte) MOS6569_VICII::CONTROL2
(byte) MOS6569_VICII::IRQ_ENABLE
(byte) MOS6569_VICII::IRQ_STATUS
(byte) MOS6569_VICII::LIGHTPEN_X
(byte) MOS6569_VICII::LIGHTPEN_Y
(byte) MOS6569_VICII::MEMORY
(byte) MOS6569_VICII::RASTER
(byte) MOS6569_VICII::SPRITE0_COLOR
(byte) MOS6569_VICII::SPRITE0_X
(byte) MOS6569_VICII::SPRITE0_Y
(byte) MOS6569_VICII::SPRITE1_COLOR
(byte) MOS6569_VICII::SPRITE1_X
(byte) MOS6569_VICII::SPRITE1_Y
(byte) MOS6569_VICII::SPRITE2_COLOR
(byte) MOS6569_VICII::SPRITE2_X
(byte) MOS6569_VICII::SPRITE2_Y
(byte) MOS6569_VICII::SPRITE3_COLOR
(byte) MOS6569_VICII::SPRITE3_X
(byte) MOS6569_VICII::SPRITE3_Y
(byte) MOS6569_VICII::SPRITE4_COLOR
(byte) MOS6569_VICII::SPRITE4_X
(byte) MOS6569_VICII::SPRITE4_Y
(byte) MOS6569_VICII::SPRITE5_COLOR
(byte) MOS6569_VICII::SPRITE5_X
(byte) MOS6569_VICII::SPRITE5_Y
(byte) MOS6569_VICII::SPRITE6_COLOR
(byte) MOS6569_VICII::SPRITE6_X
(byte) MOS6569_VICII::SPRITE6_Y
(byte) MOS6569_VICII::SPRITE7_COLOR
(byte) MOS6569_VICII::SPRITE7_X
(byte) MOS6569_VICII::SPRITE7_Y
(byte) MOS6569_VICII::SPRITES_BG_COLLISION
(byte) MOS6569_VICII::SPRITES_COLLISION
(byte) MOS6569_VICII::SPRITES_ENABLE
(byte) MOS6569_VICII::SPRITES_EXPAND_X
(byte) MOS6569_VICII::SPRITES_EXPAND_Y
(byte) MOS6569_VICII::SPRITES_MC
(byte) MOS6569_VICII::SPRITES_MCOLOR1
(byte) MOS6569_VICII::SPRITES_MCOLOR2
(byte) MOS6569_VICII::SPRITES_PRIORITY
(byte) MOS6569_VICII::SPRITES_XMSB
(byte) MOS6581_SID::CH1_ATTACK_DECAY
(byte) MOS6581_SID::CH1_CONTROL
(word) MOS6581_SID::CH1_FREQ
(word) MOS6581_SID::CH1_PULSE_WIDTH
(byte) MOS6581_SID::CH1_SUSTAIN_RELEASE
(byte) MOS6581_SID::CH2_ATTACK_DECAY
(byte) MOS6581_SID::CH2_CONTROL
(word) MOS6581_SID::CH2_FREQ
(word) MOS6581_SID::CH2_PULSE_WIDTH
(byte) MOS6581_SID::CH2_SUSTAIN_RELEASE
(byte) MOS6581_SID::CH3_ATTACK_DECAY
(byte) MOS6581_SID::CH3_CONTROL
(byte) MOS6581_SID::CH3_ENV
(word) MOS6581_SID::CH3_FREQ
(byte) MOS6581_SID::CH3_OSC
(word) MOS6581_SID::CH3_PULSE_WIDTH
(byte) MOS6581_SID::CH3_SUSTAIN_RELEASE
(byte) MOS6581_SID::FILTER_CUTOFF_HIGH
(byte) MOS6581_SID::FILTER_CUTOFF_LOW
(byte) MOS6581_SID::FILTER_SETUP
(byte) MOS6581_SID::POT_X
(byte) MOS6581_SID::POT_Y
(byte) MOS6581_SID::VOLUME_FILTER_MODE
(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = (byte) 1
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
(const dword*) RADIX_DECIMAL_VALUES_LONG[] = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
(const byte) SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = (byte) $c
(const nomodify byte) WHITE = (byte) 1
(void()) clrscr()
(label) clrscr::@1
(label) clrscr::@2
(label) clrscr::@3
(label) clrscr::@4
(label) clrscr::@5
(label) clrscr::@return
(byte) clrscr::c
(byte) clrscr::c#1 reg byte y 20002.0
(byte) clrscr::c#2 reg byte y 12501.25
(byte) clrscr::l
(byte) clrscr::l#1 reg byte x 2002.0
(byte) clrscr::l#2 reg byte x 333.6666666666667
(byte*) clrscr::line_cols
(byte*) clrscr::line_cols#1 line_cols zp[2]:24 1001.0
(byte*) clrscr::line_cols#5 line_cols zp[2]:24 1500.375
(byte*) clrscr::line_text
(byte*) clrscr::line_text#1 line_text zp[2]:20 667.3333333333334
(byte*) clrscr::line_text#5 line_text zp[2]:20 1714.7142857142858
(byte*) conio_cursor_color loadstore zp[2]:26 1.991071527767857E8
(byte*) conio_cursor_text loadstore zp[2]:24 1.939130531391304E8
(byte) conio_cursor_x loadstore zp[1]:22 3.090910100909091E7
(byte) conio_cursor_y loadstore zp[1]:23 2.5555556437301588E8
(byte) conio_textcolor loadstore zp[1]:28 6.91781514109589E7
(void()) cputc((byte) cputc::c)
(label) cputc::@1
(label) cputc::@2
(label) cputc::@3
(label) cputc::@return
(byte) cputc::c
(byte) cputc::c#0 reg byte a 2.0000002E7
(byte) cputc::c#1 reg byte a 2.0000002E7
(byte) cputc::c#2 reg byte a 20002.0
(byte) cputc::c#3 reg byte a 1.100050025E8
(void()) cputln()
(byte*~) cputln::$0 zp[2]:24 2.000000002E9
(byte*~) cputln::$1 zp[2]:24 2.000000002E9
(byte*~) cputln::$2 zp[2]:26 2.000000002E9
(byte*~) cputln::$3 zp[2]:26 2.000000002E9
(label) cputln::@return
(void()) cputs((to_nomodify byte*) cputs::s)
(label) cputs::@1
(label) cputs::@2
(label) cputs::@return
(byte) cputs::c
(byte) cputs::c#1 reg byte a 1.0000001E7
(to_nomodify byte*) cputs::s
(to_nomodify byte*) cputs::s#0 s zp[2]:35 5000000.5
(to_nomodify byte*) cputs::s#4 s zp[2]:35 1.5050002E7
(to_nomodify byte*) cputs::s#5 s zp[2]:35 100001.0
(void()) cscroll()
(byte*~) cscroll::$7 zp[2]:24 2.0000000002E10
(byte*~) cscroll::$8 zp[2]:26 2.0000000002E10
(label) cscroll::@1
(label) cscroll::@2
(label) cscroll::@3
(label) cscroll::@4
(label) cscroll::@5
(label) cscroll::@return
(void()) gotoxy((byte) gotoxy::x , (byte) gotoxy::y)
(word~) gotoxy::$10 zp[2]:26 2002.0
(word~) gotoxy::$4 zp[2]:26 2002.0
(byte*~) gotoxy::$6 zp[2]:24 2002.0
(byte*~) gotoxy::$7 zp[2]:26 2002.0
(word~) gotoxy::$8 zp[2]:26 1501.5
(word~) gotoxy::$9 zp[2]:35 2002.0
(label) gotoxy::@1
(label) gotoxy::@2
(label) gotoxy::@3
(label) gotoxy::@4
(label) gotoxy::@return
(word) gotoxy::offset
(word) gotoxy::offset#0 offset zp[2]:26 1001.0
(byte) gotoxy::x
(byte) gotoxy::x#2 reg byte x 101.0
(byte) gotoxy::x#4 reg byte x 350.5
(byte) gotoxy::x#5 reg byte x 429.0
(byte) gotoxy::y
(byte) gotoxy::y#2 reg byte a 202.0
(byte) gotoxy::y#4 reg byte a 701.0
(byte) gotoxy::y#5 reg byte a 333.6666666666667
(void()) main()
(byte~) main::$18 reg byte a 202.0
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@12
(label) main::@13
(label) main::@14
(label) main::@15
(label) main::@16
(label) main::@17
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@8
(label) main::@9
(label) main::@return
(dword) main::cnt
(dword) main::cnt#1 cnt zp[4]:2 8.875
(dword) main::cnt#2 cnt zp[4]:2 202.0
(byte) main::col
(byte) main::col#1 col zp[1]:6 101.0
(byte) main::col#3 col zp[1]:6 45.90909090909091
(byte) main::col#7 col zp[1]:6 80.8
(word) main::first
(word) main::first#0 first zp[2]:29 5.590909090909091
(word) main::rnd
(word) main::rnd#1 rnd zp[2]:8 151.5
(word) main::rnd#2 rnd zp[2]:8 30.42857142857143
(word) main::rnd#5 rnd zp[2]:8 22.0
(byte) main::row
(byte) main::row#1 row zp[1]:7 151.5
(byte) main::row#3 row zp[1]:7 44.888888888888886
(byte) main::row#7 row zp[1]:7 60.599999999999994
(const byte*) main::s[(byte) $1d] = (byte*) "generating unique randoms..."
(const byte*) main::s1[(byte) 7] = (byte*) "found "
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
(label) memcpy::@1
(label) memcpy::@2
(label) memcpy::@return
(void*) memcpy::destination
(void*) memcpy::destination#2 destination zp[2]:20
(byte*) memcpy::dst
(byte*) memcpy::dst#1 dst zp[2]:20 1.00000000000001E14
(byte*) memcpy::dst#2 dst zp[2]:20 1.0003333333333467E14
(byte*) memcpy::dst#4 dst zp[2]:20 2.00000000002E11
(word) memcpy::num
(void*) memcpy::return
(void*) memcpy::source
(void*) memcpy::source#2 source zp[2]:39
(byte*) memcpy::src
(byte*) memcpy::src#1 src zp[2]:39 2.00000000000002E14
(byte*) memcpy::src#2 src zp[2]:39 1.0002500000000125E14
(byte*) memcpy::src#4 src zp[2]:39 1.00000000001E11
(byte*) memcpy::src_end
(byte*) memcpy::src_end#0 src_end zp[2]:37 1.251250000000025E13
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@3
(label) memset::@return
(byte) memset::c
(byte) memset::c#1 reg byte x 2.0000000002E10
(byte) memset::c#4 reg byte x 1.4287142857143143E13
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:39 2.00000000000002E14
(byte*) memset::dst#2 dst zp[2]:39 1.3336666666666834E14
(byte*) memset::dst#4 dst zp[2]:39 2.00000000002E11
(byte*) memset::end
(byte*) memset::end#0 end zp[2]:37 1.6683333333333668E13
(word) memset::num
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:39
(struct printf_buffer_number) printf_buffer loadstore mem[12] = {}
(const byte*) printf_buffer_number::digits[(number) $b] = { fill( $b, 0) }
(byte) printf_buffer_number::sign
(byte) printf_format_number::justify_left
(byte) printf_format_number::min_length
(byte) printf_format_number::radix
(byte) printf_format_number::sign_always
(byte) printf_format_number::upper_case
(byte) printf_format_number::zero_padding
(byte) printf_format_string::justify_left
(byte) printf_format_string::min_length
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_upper_case , (byte) printf_number_buffer::format_radix)
(word~) printf_number_buffer::$19 zp[2]:39 10001.0
(label) printf_number_buffer::@1
(label) printf_number_buffer::@10
(label) printf_number_buffer::@11
(label) printf_number_buffer::@12
(label) printf_number_buffer::@13
(label) printf_number_buffer::@14
(label) printf_number_buffer::@15
(label) printf_number_buffer::@16
(label) printf_number_buffer::@17
(label) printf_number_buffer::@18
(label) printf_number_buffer::@19
(label) printf_number_buffer::@2
(label) printf_number_buffer::@20
(label) printf_number_buffer::@21
(label) printf_number_buffer::@3
(label) printf_number_buffer::@4
(label) printf_number_buffer::@5
(label) printf_number_buffer::@6
(label) printf_number_buffer::@7
(label) printf_number_buffer::@8
(label) printf_number_buffer::@9
(label) printf_number_buffer::@return
(struct printf_buffer_number) printf_number_buffer::buffer
(byte*) printf_number_buffer::buffer_digits
(byte) printf_number_buffer::buffer_sign
(byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:10 202.0
(byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:10 2002.0
(byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:10 1555.25
(struct printf_format_number) printf_number_buffer::format
(byte) printf_number_buffer::format_justify_left
(byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:16 645.2258064516129
(byte) printf_number_buffer::format_min_length
(byte) printf_number_buffer::format_min_length#2 reg byte x 1000.1
(byte) printf_number_buffer::format_radix
(byte) printf_number_buffer::format_sign_always
(byte) printf_number_buffer::format_upper_case
(byte) printf_number_buffer::format_upper_case#10 format_upper_case zp[1]:11 384.65384615384613
(byte) printf_number_buffer::format_zero_padding
(byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:19 937.59375
(signed byte) printf_number_buffer::len
(signed byte) printf_number_buffer::len#0 reg byte y 15001.5
(signed byte) printf_number_buffer::len#1 reg byte y 20002.0
(signed byte) printf_number_buffer::len#2 reg byte y 30003.0
(signed byte) printf_number_buffer::padding
(signed byte) printf_number_buffer::padding#1 padding zp[1]:12 10001.0
(signed byte) printf_number_buffer::padding#10 padding zp[1]:12 1904.952380952381
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
(label) printf_padding::@1
(label) printf_padding::@2
(label) printf_padding::@3
(label) printf_padding::@return
(byte) printf_padding::i
(byte) printf_padding::i#1 i zp[1]:15 2.0000002E7
(byte) printf_padding::i#2 i zp[1]:15 7500000.75
(byte) printf_padding::length
(byte) printf_padding::length#0 length zp[1]:13 20002.0
(byte) printf_padding::length#1 length zp[1]:13 20002.0
(byte) printf_padding::length#2 length zp[1]:13 20002.0
(byte) printf_padding::length#4 length zp[1]:13 1671667.3333333333
(byte) printf_padding::pad
(byte) printf_padding::pad#5 pad zp[1]:14 1666666.8333333333
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_upper_case , (byte) printf_uint::format_radix)
(label) printf_uint::@1
(label) printf_uint::@2
(label) printf_uint::@return
(struct printf_format_number) printf_uint::format
(byte) printf_uint::format_justify_left
(const byte) printf_uint::format_justify_left#0 format_justify_left = (byte) 0
(byte) printf_uint::format_min_length
(const byte) printf_uint::format_min_length#0 format_min_length = (byte) 5
(byte) printf_uint::format_radix
(byte) printf_uint::format_sign_always
(byte) printf_uint::format_upper_case
(const byte) printf_uint::format_upper_case#0 format_upper_case = (byte) 0
(byte) printf_uint::format_zero_padding
(const byte) printf_uint::format_zero_padding#0 format_zero_padding = (byte) 0
(word) printf_uint::uvalue
(word) printf_uint::uvalue#0 uvalue zp[2]:8 367.33333333333337
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_upper_case , (byte) printf_ulong::format_radix)
(label) printf_ulong::@1
(label) printf_ulong::@2
(label) printf_ulong::@return
(struct printf_format_number) printf_ulong::format
(byte) printf_ulong::format_justify_left
(const byte) printf_ulong::format_justify_left#0 format_justify_left = (byte) 0
(byte) printf_ulong::format_min_length
(const byte) printf_ulong::format_min_length#0 format_min_length = (byte) 0
(byte) printf_ulong::format_radix
(byte) printf_ulong::format_sign_always
(byte) printf_ulong::format_upper_case
(const byte) printf_ulong::format_upper_case#0 format_upper_case = (byte) 0
(byte) printf_ulong::format_zero_padding
(const byte) printf_ulong::format_zero_padding#0 format_zero_padding = (byte) 0
(dword) printf_ulong::uvalue
(dword) printf_ulong::uvalue#0 uvalue zp[4]:2 37.33333333333333
(word()) rand()
(word~) rand::$0 zp[2]:35 2002.0
(word~) rand::$1 zp[2]:39 2002.0
(word~) rand::$2 zp[2]:37 2002.0
(label) rand::@return
(word) rand::return
(word) rand::return#0 return zp[2]:8 278.25
(word) rand::return#2 return_1 zp[2]:29 22.0
(word) rand::return#3 return zp[2]:8 202.0
(word) rand_state
(word) rand_state#1 rand_state zp[2]:17 1501.5
(word) rand_state#10 rand_state zp[2]:17 77.88888888888889
(word) rand_state#2 rand_state zp[2]:17 1501.5
(word) rand_state#9 rand_state zp[2]:17 1051.5
(word()) strlen((byte*) strlen::str)
(label) strlen::@1
(label) strlen::@2
(label) strlen::@return
(word) strlen::len
(word) strlen::len#1 len zp[2]:39 1.0000001E7
(word) strlen::len#2 len zp[2]:39 5002500.75
(word) strlen::return
(word) strlen::return#2 return zp[2]:39 20002.0
(byte*) strlen::str
(byte*) strlen::str#0 str zp[2]:35 2.0000002E7
(byte*) strlen::str#2 str zp[2]:35 1.0000001E7
(byte*()) strupr((byte*) strupr::str)
(byte~) strupr::$0 reg byte a 2.0000002E7
(label) strupr::@1
(label) strupr::@2
(label) strupr::@3
(label) strupr::@return
(byte*) strupr::return
(byte*) strupr::src
(byte*) strupr::src#1 src zp[2]:20 2.0000002E7
(byte*) strupr::src#2 src zp[2]:20 7142857.857142856
(byte*) strupr::str
(const byte*) strupr::str#0 str = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
(byte()) textcolor((byte) textcolor::color)
(label) textcolor::@return
(byte) textcolor::color
(byte) textcolor::color#3 reg byte a 101.0
(byte) textcolor::old
(byte) textcolor::return
(byte()) toupper((byte) toupper::ch)
(label) toupper::@1
(label) toupper::@2
(label) toupper::@return
(byte) toupper::ch
(byte) toupper::ch#0 reg byte a 1.70000002E8
(byte) toupper::return
(byte) toupper::return#0 reg byte a 2.00000002E8
(byte) toupper::return#2 reg byte a 1.0333333466666667E8
(byte) toupper::return#3 reg byte a 2.0000002E7
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
(byte~) ultoa::$10 reg byte a 20002.0
(byte~) ultoa::$11 reg byte a 2002.0
(label) ultoa::@1
(label) ultoa::@2
(label) ultoa::@3
(label) ultoa::@4
(label) ultoa::@5
(label) ultoa::@6
(label) ultoa::@7
(label) ultoa::@return
(byte*) ultoa::buffer
(byte*) ultoa::buffer#11 buffer zp[2]:39 3000.4285714285716
(byte*) ultoa::buffer#14 buffer zp[2]:39 15001.5
(byte*) ultoa::buffer#3 buffer zp[2]:39 2002.0
(byte*) ultoa::buffer#4 buffer zp[2]:39 20002.0
(byte) ultoa::digit
(byte) ultoa::digit#1 digit zp[1]:16 20002.0
(byte) ultoa::digit#2 digit zp[1]:16 2857.4285714285716
(dword) ultoa::digit_value
(dword) ultoa::digit_value#0 digit_value zp[4]:31 6000.6
(dword*) ultoa::digit_values
(byte) ultoa::max_digits
(const byte) ultoa::max_digits#1 max_digits = (byte) $a
(byte) ultoa::radix
(byte) ultoa::started
(byte) ultoa::started#2 reg byte x 5000.5
(byte) ultoa::started#4 reg byte x 10001.0
(dword) ultoa::value
(dword) ultoa::value#0 value zp[4]:2 10001.0
(dword) ultoa::value#1 value zp[4]:2 551.0
(dword) ultoa::value#2 value zp[4]:2 5857.857142857143
(dword) ultoa::value#6 value zp[4]:2 15001.5
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
(label) ultoa_append::@1
(label) ultoa_append::@2
(label) ultoa_append::@3
(label) ultoa_append::@return
(byte*) ultoa_append::buffer
(byte*) ultoa_append::buffer#0 buffer zp[2]:39 13750.25
(byte) ultoa_append::digit
(byte) ultoa_append::digit#1 reg byte x 1.0000001E7
(byte) ultoa_append::digit#2 reg byte x 1.00500015E7
(dword) ultoa_append::return
(dword) ultoa_append::return#0 return zp[4]:2 20002.0
(dword) ultoa_append::sub
(dword) ultoa_append::sub#0 sub zp[4]:31 3335000.5
(dword) ultoa_append::value
(dword) ultoa_append::value#0 value zp[4]:2 36667.33333333333
(dword) ultoa_append::value#1 value zp[4]:2 2.0000002E7
(dword) ultoa_append::value#2 value zp[4]:2 5018334.166666666
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
(byte~) utoa::$10 reg byte a 2000002.0
(byte~) utoa::$11 reg byte a 20002.0
(label) utoa::@1
(label) utoa::@2
(label) utoa::@3
(label) utoa::@4
(label) utoa::@5
(label) utoa::@6
(label) utoa::@7
(label) utoa::@return
(byte*) utoa::buffer
(byte*) utoa::buffer#11 buffer zp[2]:20 287143.2857142857
(byte*) utoa::buffer#14 buffer zp[2]:20 1500001.5
(byte*) utoa::buffer#3 buffer zp[2]:20 20002.0
(byte*) utoa::buffer#4 buffer zp[2]:20 2000002.0
(byte) utoa::digit
(byte) utoa::digit#1 digit zp[1]:19 2000002.0
(byte) utoa::digit#2 digit zp[1]:19 285714.5714285714
(word) utoa::digit_value
(word) utoa::digit_value#0 digit_value zp[2]:39 600000.6000000001
(word*) utoa::digit_values
(byte) utoa::max_digits
(const byte) utoa::max_digits#1 max_digits = (byte) 5
(byte) utoa::radix
(byte) utoa::started
(byte) utoa::started#2 reg byte x 500000.5
(byte) utoa::started#4 reg byte x 1000001.0
(word) utoa::value
(word) utoa::value#0 value zp[2]:8 1000001.0
(word) utoa::value#1 value zp[2]:8 5501.0
(word) utoa::value#2 value zp[2]:8 572857.857142857
(word) utoa::value#6 value zp[2]:8 1500001.5
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
(label) utoa_append::@1
(label) utoa_append::@2
(label) utoa_append::@3
(label) utoa_append::@return
(byte*) utoa_append::buffer
(byte*) utoa_append::buffer#0 buffer zp[2]:20 1375000.25
(byte) utoa_append::digit
(byte) utoa_append::digit#1 reg byte x 1.0000000001E10
(byte) utoa_append::digit#2 reg byte x 1.00050000015E10
(word) utoa_append::return
(word) utoa_append::return#0 return zp[2]:8 2000002.0
(word) utoa_append::sub
(word) utoa_append::sub#0 sub zp[2]:39 3.3335000005E9
(word) utoa_append::value
(word) utoa_append::value#0 value zp[2]:8 3666667.333333333
(word) utoa_append::value#1 value zp[2]:8 2.0000000002E10
(word) utoa_append::value#2 value zp[2]:8 5.001833334166666E9
zp[4]:2 [ main::cnt#2 main::cnt#1 printf_ulong::uvalue#0 ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ultoa_append::return#0 ]
zp[1]:6 [ main::col#3 main::col#7 main::col#1 ]
zp[1]:7 [ main::row#3 main::row#7 main::row#1 ]
zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 printf_uint::uvalue#0 rand::return#3 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 rand::return#0 ]
reg byte x [ printf_number_buffer::format_min_length#2 ]
zp[1]:10 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
zp[1]:11 [ printf_number_buffer::format_upper_case#10 ]
reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
zp[1]:12 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
zp[1]:13 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
zp[1]:14 [ printf_padding::pad#5 ]
zp[1]:15 [ printf_padding::i#2 printf_padding::i#1 ]
reg byte a [ cputc::c#3 cputc::c#0 cputc::c#2 cputc::c#1 ]
reg byte x [ memset::c#4 memset::c#1 ]
reg byte a [ toupper::return#2 toupper::return#0 toupper::ch#0 ]
zp[1]:16 [ ultoa::digit#2 ultoa::digit#1 printf_number_buffer::format_justify_left#10 ]
reg byte x [ ultoa::started#2 ultoa::started#4 ]
reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ]
reg byte a [ textcolor::color#3 ]
reg byte a [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#2 ]
reg byte x [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#2 ]
zp[2]:17 [ rand_state#9 rand_state#10 rand_state#1 rand_state#2 ]
zp[1]:19 [ utoa::digit#2 utoa::digit#1 printf_number_buffer::format_zero_padding#10 ]
reg byte x [ utoa::started#2 utoa::started#4 ]
reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ]
reg byte x [ clrscr::l#2 clrscr::l#1 ]
zp[2]:20 [ clrscr::line_text#5 clrscr::line_text#1 utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 strupr::src#2 strupr::src#1 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
reg byte y [ clrscr::c#2 clrscr::c#1 ]
zp[1]:22 [ conio_cursor_x ]
zp[1]:23 [ conio_cursor_y ]
zp[2]:24 [ conio_cursor_text cscroll::$7 cputln::$0 cputln::$1 gotoxy::$6 clrscr::line_cols#5 clrscr::line_cols#1 ]
zp[2]:26 [ conio_cursor_color cscroll::$8 cputln::$2 cputln::$3 gotoxy::$7 gotoxy::$4 gotoxy::offset#0 gotoxy::$8 gotoxy::$10 ]
zp[1]:28 [ conio_textcolor ]
zp[2]:29 [ rand::return#2 main::first#0 ]
reg byte a [ main::$18 ]
reg byte a [ cputs::c#1 ]
reg byte a [ toupper::return#3 ]
reg byte a [ strupr::$0 ]
reg byte a [ ultoa::$11 ]
reg byte a [ ultoa::$10 ]
zp[4]:31 [ ultoa::digit_value#0 ultoa_append::sub#0 ]
zp[2]:35 [ rand::$0 gotoxy::$9 strlen::str#2 strlen::str#0 cputs::s#4 cputs::s#5 cputs::s#0 ]
zp[2]:37 [ rand::$2 memcpy::src_end#0 memset::end#0 ]
reg byte a [ utoa::$11 ]
reg byte a [ utoa::$10 ]
zp[2]:39 [ utoa::digit_value#0 utoa_append::sub#0 rand::$1 ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
mem[12] [ printf_buffer ]