1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-01-11 04:29:53 +00:00

Added 32bit unsigned rol/ror fragments.

This commit is contained in:
jespergravgaard 2020-10-30 16:05:31 +01:00
parent 6f1ef0274e
commit e8ccd96d07
30 changed files with 27567 additions and 19321 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
lda {m2}
sta {m1}
lda {m2}+1
sta {m1}+1
lda {m2}+2
sta {m1}+2
lda {m2}+3
sta {m1}+3

View File

@ -9,5 +9,4 @@ rol
sta {m1}+2
lda {m2}+3
rol
sta {m1}+3
sta {m1}+3

View File

@ -0,0 +1,6 @@
lda #0
sta {m1}
sta {m1}+1
sta {m1}+2
lda {m2}
sta {m1}+3

View File

@ -0,0 +1,5 @@
lda #0
sta {m1}
sta {m1}+1
sta {m1}+2
sta {m1}+3

View File

@ -0,0 +1,28 @@
lda {m2}
asl
sta {m1}
lda {m2}+1
rol
sta {m1}+1
lda {m2}+2
rol
sta {m1}+2
lda {m2}+3
rol
sta {m1}+3
asl {m1}
rol {m1}+1
rol {m1}+2
rol {m1}+3
asl {m1}
rol {m1}+1
rol {m1}+2
rol {m1}+3
asl {m1}
rol {m1}+1
rol {m1}+2
rol {m1}+3
asl {m1}
rol {m1}+1
rol {m1}+2
rol {m1}+3

View File

@ -0,0 +1,20 @@
lda {m2}+3
lsr
sta $ff
lda {m2}+2
ror
sta {m1}+3
lda {m2}+1
ror
sta {m1}+2
lda {m2}
ror
sta {m1}+1
lda #0
ror
sta {m1}
lsr $ff
ror {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}

View File

@ -0,0 +1,14 @@
lda {m2}+3
lsr
lda {m2}+2
ror
sta {m1}+3
lda {m2}+1
ror
sta {m1}+2
lda {m2}
ror
sta {m1}+1
lda #0
ror
sta {m1}

View File

@ -0,0 +1,8 @@
lda #0
sta {m1}
lda {m2}
sta {m1}+1
lda {m2}+1
sta {m1}+2
lda {m2}+2
sta {m1}+3

View File

@ -0,0 +1,11 @@
lda #0
sta {m1}
lda {m2}
asl
sta {m1}+1
lda {m2}+1
rol
sta {m1}+2
lda {m2}+2
rol
sta {m1}+3

View File

@ -0,0 +1,12 @@
lda {m2}+3
lsr
sta {m1}+3
lda {m2}+2
ror
sta {m1}+2
lda {m2}+1
ror
sta {m1}+1
lda {m2}
ror
sta {m1}

View File

@ -1,8 +1,7 @@
lda #0
sta {m1}+2
sta {m1}+3
sta {m1}+2
lda {m2}+3
sta {m1}+1
lda {m2}+2
sta {m1}
sta {m1}

View File

@ -0,0 +1,16 @@
lda {m2}+3
lsr
sta {m1}+3
lda {m2}+2
ror
sta {m1}+2
lda {m2}+1
ror
sta {m1}+1
lda {m2}
ror
sta {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}

View File

@ -0,0 +1,6 @@
lda #0
sta {m1}+3
sta {m1}+2
sta {m1}+1
lda {m2}+3
sta {m1}

View File

@ -0,0 +1,20 @@
lda {m2}+3
lsr
sta {m1}+3
lda {m2}+2
ror
sta {m1}+2
lda {m2}+1
ror
sta {m1}+1
lda {m2}
ror
sta {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}

View File

@ -0,0 +1,5 @@
lda #0
sta {m1}+3
sta {m1}+2
sta {m1}+1
sta {m1}

View File

@ -0,0 +1,28 @@
lda {m2}+3
lsr
sta {m1}+3
lda {m2}+2
ror
sta {m1}+2
lda {m2}+1
ror
sta {m1}+1
lda {m2}
ror
sta {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}

View File

@ -1,18 +1,20 @@
lda {m2}
sta {m1}
asl
sta $ff
lda {m2}+1
sta {m1}+1
rol
sta {m1}
lda {m2}+2
sta {m1}+2
rol
sta {m1}+1
lda {m2}+3
rol
sta {m1}+2
lda #0
rol
sta {m1}+3
ldx {m3}
beq !e+
!:
asl {m1}
asl $ff
rol {m1}
rol {m1}+1
rol {m1}+2
rol {m1}+3
dex
bne !-
!e:
rol {m1}+3

View File

@ -0,0 +1,14 @@
lda {m2}
asl
lda {m2}+1
rol
sta {m1}
lda {m2}+2
rol
sta {m1}+1
lda {m2}+3
rol
sta {m1}+2
lda #0
rol
sta {m1}+3

View File

@ -0,0 +1,8 @@
lda #0
sta {m1}+3
lda {m2}+3
sta {m1}+2
lda {m2}+2
sta {m1}+1
lda {m2}+1
sta {m1}

View File

@ -0,0 +1,11 @@
lda #0
sta {m1}+3
lda {m2}+3
lsr
sta {m1}+2
lda {m2}+2
ror
sta {m1}+1
lda {m2}+1
ror
sta {m1}

View File

@ -1,6 +1,6 @@
sta {m1}
ora #$7f
bmi !+
lda #0
and #$80
beq !+
lda #$ff
!:
sta {m1}+1

View File

@ -1,15 +1,11 @@
// ROL once instead of RORing 7 times
lda {m2} // {m2} low byte to tmp $ff
sta $ff
lda {m2}+1 // {m2} high byte to {m1} low byte
lda {m2}+1
sta {m1}
lda #0
bit {m2}+1
bpl !+ // {m2} high byte positive?
and #$80
beq !+
lda #$ff
!:
sta {m1}+1 // sign extended {m2} into {m1} high byte
// ROL once
rol $ff
sta {m1}+1
lda {m2}
rol
rol {m1}
rol {m1}+1

View File

@ -0,0 +1,7 @@
lda {m2}+1
sta {m1}
and #$80
beq !+
lda #$ff
!:
sta {m1}+1

View File

@ -44,6 +44,11 @@ public class TestPrograms {
public TestPrograms() {
}
@Test
public void test32bitRols() throws IOException, URISyntaxException {
compileAndCompare("32bit-rols.c");
}
@Test
public void testAtariXlMd5() throws IOException, URISyntaxException {
compileAndCompare("atarixl-md5.c");

90
src/test/kc/32bit-rols.c Normal file
View File

@ -0,0 +1,90 @@
// Tests different rotate left commands
#include <stdio.h>
#include <conio.h>
void main() {
unsigned long vals[] = { 0xdeadbeef, 0xfacefeed };
char i=0;
while(1) {
clrscr();
rol_fixed(vals[i]);
while(!kbhit()) ;
clrscr();
ror_fixed(vals[i]);
while(!kbhit()) ;
clrscr();
rol_var(vals[i]);
while(!kbhit()) ;
clrscr();
ror_var(vals[i]);
while(!kbhit()) ;
i = (i+1)&1;
}
}
void rol_fixed(unsigned long val) {
printf("rol fixed\n");
printf("%2d: %08lx\n", 0, val<<0);
printf("%2d: %08lx\n", 1, val<<1);
printf("%2d: %08lx\n", 2, val<<2);
printf("%2d: %08lx\n", 3, val<<3);
printf("%2d: %08lx\n", 4, val<<4);
printf("%2d: %08lx\n", 5, val<<5);
printf("%2d: %08lx\n", 6, val<<6);
printf("%2d: %08lx\n", 7, val<<7);
printf("%2d: %08lx\n", 8, val<<8);
printf("%2d: %08lx\n", 9, val<<9);
printf("%2d: %08lx\n", 12, val<<12);
printf("%2d: %08lx\n", 15, val<<15);
printf("%2d: %08lx\n", 16, val<<16);
printf("%2d: %08lx\n", 17, val<<17);
printf("%2d: %08lx\n", 20, val<<20);
printf("%2d: %08lx\n", 23, val<<23);
printf("%2d: %08lx\n", 24, val<<24);
printf("%2d: %08lx\n", 25, val<<25);
printf("%2d: %08lx\n", 28, val<<28);
printf("%2d: %08lx\n", 31, val<<31);
printf("%2d: %08lx\n", 32, val<<32);
}
void ror_fixed(unsigned long val) {
printf("ror fixed\n");
printf("%2d: %08lx\n", 0, val>>0);
printf("%2d: %08lx\n", 1, val>>1);
printf("%2d: %08lx\n", 2, val>>2);
printf("%2d: %08lx\n", 3, val>>3);
printf("%2d: %08lx\n", 4, val>>4);
printf("%2d: %08lx\n", 5, val>>5);
printf("%2d: %08lx\n", 6, val>>6);
printf("%2d: %08lx\n", 7, val>>7);
printf("%2d: %08lx\n", 8, val>>8);
printf("%2d: %08lx\n", 9, val>>9);
printf("%2d: %08lx\n", 12, val>>12);
printf("%2d: %08lx\n", 15, val>>15);
printf("%2d: %08lx\n", 16, val>>16);
printf("%2d: %08lx\n", 17, val>>17);
printf("%2d: %08lx\n", 20, val>>20);
printf("%2d: %08lx\n", 23, val>>23);
printf("%2d: %08lx\n", 24, val>>24);
printf("%2d: %08lx\n", 25, val>>25);
printf("%2d: %08lx\n", 28, val>>28);
printf("%2d: %08lx\n", 31, val>>31);
printf("%2d: %08lx\n", 32, val>>32);
}
// The different ROL/ROR values
char rols[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 20, 23, 24, 25, 28, 31 ,32 };
void rol_var(unsigned long val) {
printf("rol var\n");
for(char i=0;i<sizeof(rols);i++)
printf("%2u: %08lx\n", rols[i], val<<rols[i]);
}
void ror_var(unsigned long val) {
printf("ror var\n");
for(char i=0;i<sizeof(rols);i++)
printf("%2u: %08lx\n", rols[i], val>>rols[i]);
}

2701
src/test/ref/32bit-rols.asm Normal file

File diff suppressed because it is too large Load Diff

1380
src/test/ref/32bit-rols.cfg Normal file

File diff suppressed because it is too large Load Diff

22721
src/test/ref/32bit-rols.log Normal file

File diff suppressed because one or more lines are too long

417
src/test/ref/32bit-rols.sym Normal file
View File

@ -0,0 +1,417 @@
const nomodify byte* COLORRAM = (byte*) 55296
const nomodify byte* DEFAULT_SCREEN = (byte*) 1024
const byte* DIGITS[] = "0123456789abcdef"z
const nomodify byte LIGHT_BLUE = $e
const byte OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
const byte RADIX::BINARY = 2
const byte RADIX::DECIMAL = $a
const byte RADIX::HEXADECIMAL = $10
const byte RADIX::OCTAL = 8
const word* RADIX_DECIMAL_VALUES[] = { $2710, $3e8, $64, $a }
const byte* RADIX_DECIMAL_VALUES_CHAR[] = { $64, $a }
const dword* RADIX_HEXADECIMAL_VALUES_LONG[] = { $10000000, $1000000, $100000, $10000, $1000, $100, $10 }
const byte SIZEOF_BYTE = 1
const byte SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c
void __start()
void clrscr()
byte clrscr::c
byte clrscr::c#1 reg byte y 2000002.0
byte clrscr::c#2 reg byte y 1250001.25
byte clrscr::l
byte clrscr::l#1 reg byte x 200002.0
byte clrscr::l#2 reg byte x 33333.66666666667
byte* clrscr::line_cols
byte* clrscr::line_cols#1 line_cols zp[2]:4 100001.0
byte* clrscr::line_cols#5 line_cols zp[2]:4 150000.375
byte* clrscr::line_text
byte* clrscr::line_text#1 line_text zp[2]:12 66667.33333333333
byte* clrscr::line_text#5 line_text zp[2]:12 171429.0
byte conio_cursor_x loadstore zp[1]:19 3.2537960956635574E10
byte conio_cursor_y loadstore zp[1]:20 6.708595387861803E11
byte* conio_line_color loadstore zp[2]:23 4.65263157896859E11
byte* conio_line_text loadstore zp[2]:21 4.642857142878319E11
void cputc(byte cputc::c)
byte cputc::c
byte cputc::c#0 reg byte a 2.00000000002E11
byte cputc::c#1 reg byte a 2.00000000002E11
byte cputc::c#2 reg byte a 2.0000002E7
byte cputc::c#3 reg byte a 1.1000050000025E12
void cputln()
void cputs(to_nomodify byte* cputs::s)
byte cputs::c
byte cputs::c#1 reg byte a 1.00000000001E11
to_nomodify byte* cputs::s
to_nomodify byte* cputs::s#0 s zp[2]:12 5.00000000005E10
to_nomodify byte* cputs::s#94 s zp[2]:12 1.50050000002E11
to_nomodify byte* cputs::s#95 s zp[2]:12 1.00000001E8
void cscroll()
byte kbhit()
const nomodify byte* kbhit::CIA1_PORT_A = (byte*) 56320
const nomodify byte* kbhit::CIA1_PORT_B = (byte*) 56321
byte kbhit::return
byte kbhit::return#0 reg byte a 2334.1666666666665
byte kbhit::return#10 reg byte a 2002.0
byte kbhit::return#2 reg byte a 2002.0
byte kbhit::return#3 reg byte a 2002.0
byte kbhit::return#4 reg byte a 2002.0
void main()
byte~ main::$10 reg byte a 2002.0
byte~ main::$14 reg byte a 2002.0
byte~ main::$16 reg byte x 202.0
byte~ main::$19 zp[1]:25 18.035714285714285
byte~ main::$2 reg byte a 2002.0
byte~ main::$6 reg byte a 2002.0
byte main::i
byte main::i#1 i zp[1]:2 202.0
byte main::i#12 i zp[1]:2 7.973684210526316
const dword* main::vals[] = { $deadbeef, $facefeed }
void* memcpy(void* memcpy::destination , void* memcpy::source , word memcpy::num)
void* memcpy::destination
void* memcpy::destination#2 destination zp[2]:39
byte* memcpy::dst
byte* memcpy::dst#1 dst zp[2]:39 1.0E19
byte* memcpy::dst#2 dst zp[2]:39 1.0000333333333334E19
byte* memcpy::dst#4 dst zp[2]:39 2.000000000000002E15
word memcpy::num
void* memcpy::return
void* memcpy::source
void* memcpy::source#2 source zp[2]:17
byte* memcpy::src
byte* memcpy::src#1 src zp[2]:17 2.0E19
byte* memcpy::src#2 src zp[2]:17 1.000025E19
byte* memcpy::src#4 src zp[2]:17 1.000000000000001E15
byte* memcpy::src_end
byte* memcpy::src_end#0 src_end zp[2]:37 1.250125E18
void* memset(void* memset::str , byte memset::c , word memset::num)
byte memset::c
byte memset::c#4 reg byte x 1.42857142857142861E18
byte* memset::dst
byte* memset::dst#1 dst zp[2]:17 2.0E19
byte* memset::dst#2 dst zp[2]:17 1.3333666666666668E19
byte* memset::dst#4 dst zp[2]:17 2.000000000000002E15
byte* memset::end
byte* memset::end#0 end zp[2]:39 1.6668333333333335E18
word memset::num
void* memset::return
void* memset::str
void* memset::str#3 str zp[2]:17
struct printf_buffer_number printf_buffer loadstore mem[12] = {}
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]:30 1.0000001E7
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]:11 2000002.0
byte printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:11 20002.0
byte printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:11 1684737.1578947369
byte printf_number_buffer::buffer_sign#2 buffer_sign zp[1]:11 2000002.0
struct printf_format_number printf_number_buffer::format
byte printf_number_buffer::format_justify_left
byte printf_number_buffer::format_min_length
byte printf_number_buffer::format_min_length#3 reg byte x 1000000.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_zero_padding
byte printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:10 952381.0476190476
signed byte printf_number_buffer::len
signed byte printf_number_buffer::len#0 reg byte y 1.50000015E7
signed byte printf_number_buffer::len#1 reg byte y 2.0000002E7
signed byte printf_number_buffer::len#2 reg byte y 3.0000003E7
signed byte printf_number_buffer::padding
signed byte printf_number_buffer::padding#1 padding zp[1]:14 1.0000001E7
signed byte printf_number_buffer::padding#10 padding zp[1]:14 3000000.3
void printf_padding(byte printf_padding::pad , byte printf_padding::length)
byte printf_padding::i
byte printf_padding::i#1 i zp[1]:16 2.00000000002E11
byte printf_padding::i#2 i zp[1]:16 7.500000000075E10
byte printf_padding::length
byte printf_padding::length#0 length zp[1]:15 2.0000002E7
byte printf_padding::length#1 length zp[1]:15 2.0000002E7
byte printf_padding::length#4 length zp[1]:15 1.66700000005E10
byte printf_padding::pad
byte printf_padding::pad#5 pad zp[1]:36 1.6666666666833334E10
void printf_sint(signed word printf_sint::value , byte printf_sint::format_min_length , byte printf_sint::format_justify_left , byte printf_sint::format_sign_always , byte printf_sint::format_zero_padding , byte printf_sint::format_upper_case , byte printf_sint::format_radix)
struct printf_format_number printf_sint::format
byte printf_sint::format_justify_left
byte printf_sint::format_min_length
byte printf_sint::format_radix
byte printf_sint::format_sign_always
byte printf_sint::format_upper_case
byte printf_sint::format_zero_padding
word printf_sint::uvalue
signed word printf_sint::value
signed word printf_sint::value#0 value zp[2]:4 10001.0
signed word printf_sint::value#43 value zp[2]:4 10001.0
signed word printf_sint::value#45 value zp[2]:4 20002.0
void printf_uchar(byte printf_uchar::uvalue , byte printf_uchar::format_min_length , byte printf_uchar::format_justify_left , byte printf_uchar::format_sign_always , byte printf_uchar::format_zero_padding , byte printf_uchar::format_upper_case , byte printf_uchar::format_radix)
struct printf_format_number printf_uchar::format
byte printf_uchar::format_justify_left
byte printf_uchar::format_min_length
byte printf_uchar::format_radix
byte printf_uchar::format_sign_always
byte printf_uchar::format_upper_case
byte printf_uchar::format_zero_padding
byte printf_uchar::uvalue
byte printf_uchar::uvalue#0 reg byte x 200002.0
byte printf_uchar::uvalue#1 reg byte x 200002.0
byte printf_uchar::uvalue#2 reg byte x 600001.5
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)
struct printf_format_number printf_ulong::format
byte printf_ulong::format_justify_left
byte printf_ulong::format_min_length
byte printf_ulong::format_radix
byte printf_ulong::format_sign_always
byte printf_ulong::format_upper_case
byte printf_ulong::format_zero_padding
dword printf_ulong::uvalue
dword printf_ulong::uvalue#0 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#1 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#10 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#11 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#12 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#13 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#14 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#15 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#16 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#17 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#18 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#19 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#2 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#20 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#21 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#22 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#23 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#24 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#25 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#26 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#27 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#28 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#29 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#3 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#30 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#31 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#32 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#33 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#34 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#35 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#36 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#37 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#38 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#39 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#4 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#40 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#41 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#42 uvalue zp[4]:6 33333.666666666664
dword printf_ulong::uvalue#43 uvalue zp[4]:6 33333.666666666664
dword printf_ulong::uvalue#44 uvalue zp[4]:6 621022.5
dword printf_ulong::uvalue#5 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#6 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#7 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#8 uvalue zp[4]:6 400.4
dword printf_ulong::uvalue#9 uvalue zp[4]:6 400.4
void rol_fixed(dword rol_fixed::val)
const byte* rol_fixed::s[$b] = "rol fixed
"
dword rol_fixed::val
dword rol_fixed::val#0 val zp[4]:26 129.58282208588952
void rol_var(dword rol_var::val)
byte rol_var::i
byte rol_var::i#1 i zp[1]:3 200002.0
byte rol_var::i#2 i zp[1]:3 45455.0
const byte* rol_var::s[9] = "rol var
"
dword rol_var::val
dword rol_var::val#0 val zp[4]:26 6673.466666666667
const byte* rols[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $c, $f, $10, $11, $14, $17, $18, $19, $1c, $1f, $20 }
void ror_fixed(dword ror_fixed::val)
const byte* ror_fixed::s[$b] = "ror fixed
"
dword ror_fixed::val
dword ror_fixed::val#0 val zp[4]:26 129.58282208588952
void ror_var(dword ror_var::val)
byte ror_var::i
byte ror_var::i#1 i zp[1]:3 200002.0
byte ror_var::i#2 i zp[1]:3 45455.0
const byte* ror_var::s[9] = "ror var
"
dword ror_var::val
dword ror_var::val#0 val zp[4]:26 6673.466666666667
const byte* s1[3] = ": "
const byte* s2[2] = "
"
word strlen(byte* strlen::str)
word strlen::len
word strlen::len#1 len zp[2]:30 1.00000000001E11
word strlen::len#2 len zp[2]:30 5.000250000075E10
word strlen::return
word strlen::return#2 return zp[2]:30 2.0000002E7
byte* strlen::str
byte* strlen::str#0 str zp[2]:17 2.00000000002E11
byte* strlen::str#2 str zp[2]:17 1.00000000001E11
void uctoa(byte uctoa::value , byte* uctoa::buffer , byte uctoa::radix)
byte* uctoa::buffer
byte* uctoa::buffer#11 buffer zp[2]:17 3.3350000004999995E9
byte* uctoa::buffer#14 buffer zp[2]:17 1.50000000015E10
byte* uctoa::buffer#3 buffer zp[2]:17 2.0000002E7
byte* uctoa::buffer#4 buffer zp[2]:17 2.0000000002E10
byte uctoa::digit
byte uctoa::digit#1 digit zp[1]:14 2.0000000002E10
byte uctoa::digit#2 digit zp[1]:14 3.076923077230769E9
byte uctoa::digit_value
byte uctoa::digit_value#0 digit_value zp[1]:36 6.0000000006E9
byte* uctoa::digit_values
byte uctoa::max_digits
byte uctoa::radix
byte uctoa::started
byte uctoa::started#2 started zp[1]:15 6.0000000006E9
byte uctoa::started#4 started zp[1]:15 1.0000000001E10
byte uctoa::value
byte uctoa::value#0 reg byte x 1.0000000001E10
byte uctoa::value#1 reg byte x 5500001.0
byte uctoa::value#2 reg byte x 6.670000000999999E9
byte uctoa::value#6 reg byte x 1.50000000015E10
byte uctoa_append(byte* uctoa_append::buffer , byte uctoa_append::value , byte uctoa_append::sub)
byte* uctoa_append::buffer
byte* uctoa_append::buffer#0 buffer zp[2]:17 1.375000000025E10
byte uctoa_append::digit
byte uctoa_append::digit#1 reg byte y 1.000000000000001E15
byte uctoa_append::digit#2 reg byte y 1.0000500000000015E15
byte uctoa_append::return
byte uctoa_append::return#0 reg byte x 2.0000000002E10
byte uctoa_append::sub
byte uctoa_append::sub#0 sub zp[1]:36 3.333350000000005E14
byte uctoa_append::value
byte uctoa_append::value#0 reg byte x 3.6666666667333336E10
byte uctoa_append::value#1 reg byte x 2.000000000000002E15
byte uctoa_append::value#2 reg byte x 5.0001833333333425E14
void ultoa(dword ultoa::value , byte* ultoa::buffer , byte ultoa::radix)
byte~ ultoa::$10 reg byte a 2.0000000002E10
byte~ ultoa::$11 reg byte a 2.0000002E7
byte* ultoa::buffer
byte* ultoa::buffer#11 buffer zp[2]:12 2.858571429E9
byte* ultoa::buffer#14 buffer zp[2]:12 1.50000000015E10
byte* ultoa::buffer#3 buffer zp[2]:12 2.0000002E7
byte* ultoa::buffer#4 buffer zp[2]:12 2.0000000002E10
byte ultoa::digit
byte ultoa::digit#1 digit zp[1]:11 2.0000000002E10
byte ultoa::digit#2 digit zp[1]:11 2.857142857428571E9
dword ultoa::digit_value
dword ultoa::digit_value#0 digit_value zp[4]:32 6.0000000006E9
dword* ultoa::digit_values
byte ultoa::max_digits
byte ultoa::radix
byte ultoa::started
byte ultoa::started#2 reg byte x 5.0000000005E9
byte ultoa::started#4 reg byte x 1.0000000001E10
dword ultoa::value
dword ultoa::value#0 value zp[4]:6 1.0000000001E10
dword ultoa::value#1 value zp[4]:6 5500001.0
dword ultoa::value#2 value zp[4]:6 5.715714286428572E9
dword ultoa::value#6 value zp[4]:6 1.50000000015E10
dword ultoa_append(byte* ultoa_append::buffer , dword ultoa_append::value , dword ultoa_append::sub)
byte* ultoa_append::buffer
byte* ultoa_append::buffer#0 buffer zp[2]:12 1.375000000025E10
byte ultoa_append::digit
byte ultoa_append::digit#1 reg byte x 1.000000000000001E15
byte ultoa_append::digit#2 reg byte x 1.0000500000000015E15
dword ultoa_append::return
dword ultoa_append::return#0 return zp[4]:6 2.0000000002E10
dword ultoa_append::sub
dword ultoa_append::sub#0 sub zp[4]:32 3.333350000000005E14
dword ultoa_append::value
dword ultoa_append::value#0 value zp[4]:6 3.6666666667333336E10
dword ultoa_append::value#1 value zp[4]:6 2.000000000000002E15
dword ultoa_append::value#2 value zp[4]:6 5.0001833333333425E14
void utoa(word utoa::value , byte* utoa::buffer , byte utoa::radix)
byte~ utoa::$10 reg byte a 2.0000002E7
byte~ utoa::$11 reg byte a 200002.0
byte* utoa::buffer
byte* utoa::buffer#11 buffer zp[2]:12 2871429.0
byte* utoa::buffer#14 buffer zp[2]:12 1.50000015E7
byte* utoa::buffer#3 buffer zp[2]:12 200002.0
byte* utoa::buffer#4 buffer zp[2]:12 2.0000002E7
byte utoa::digit
byte utoa::digit#1 digit zp[1]:10 2.0000002E7
byte utoa::digit#2 digit zp[1]:10 2857143.1428571427
word utoa::digit_value
word utoa::digit_value#0 digit_value zp[2]:30 6000000.6
word* utoa::digit_values
byte utoa::max_digits
byte utoa::radix
byte utoa::started
byte utoa::started#2 reg byte x 5000000.5
byte utoa::started#4 reg byte x 1.0000001E7
word utoa::value
word utoa::value#0 value zp[2]:4 1.0000001E7
word utoa::value#1 value zp[2]:4 55001.0
word utoa::value#2 value zp[2]:4 5728572.142857142
word utoa::value#6 value zp[2]:4 1.50000015E7
word utoa_append(byte* utoa_append::buffer , word utoa_append::value , word utoa_append::sub)
byte* utoa_append::buffer
byte* utoa_append::buffer#0 buffer zp[2]:12 1.375000025E7
byte utoa_append::digit
byte utoa_append::digit#1 reg byte x 1.00000000001E11
byte utoa_append::digit#2 reg byte x 1.000500000015E11
word utoa_append::return
word utoa_append::return#0 return zp[2]:4 2.0000002E7
word utoa_append::sub
word utoa_append::sub#0 sub zp[2]:30 3.33350000005E10
word utoa_append::value
word utoa_append::value#0 value zp[2]:4 3.6666667333333336E7
word utoa_append::value#1 value zp[2]:4 2.00000000002E11
word utoa_append::value#2 value zp[2]:4 5.001833333416667E10
zp[1]:2 [ main::i#12 main::i#1 ]
reg byte x [ clrscr::l#2 clrscr::l#1 ]
reg byte y [ clrscr::c#2 clrscr::c#1 ]
zp[1]:3 [ ror_var::i#2 ror_var::i#1 rol_var::i#2 rol_var::i#1 ]
zp[2]:4 [ printf_sint::value#45 printf_sint::value#0 printf_sint::value#43 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 clrscr::line_cols#5 clrscr::line_cols#1 ]
zp[4]:6 [ printf_ulong::uvalue#44 printf_ulong::uvalue#2 printf_ulong::uvalue#3 printf_ulong::uvalue#4 printf_ulong::uvalue#5 printf_ulong::uvalue#6 printf_ulong::uvalue#0 printf_ulong::uvalue#7 printf_ulong::uvalue#8 printf_ulong::uvalue#9 printf_ulong::uvalue#10 printf_ulong::uvalue#11 printf_ulong::uvalue#12 printf_ulong::uvalue#13 printf_ulong::uvalue#14 printf_ulong::uvalue#15 printf_ulong::uvalue#16 printf_ulong::uvalue#1 printf_ulong::uvalue#17 printf_ulong::uvalue#18 printf_ulong::uvalue#19 printf_ulong::uvalue#20 printf_ulong::uvalue#42 printf_ulong::uvalue#23 printf_ulong::uvalue#24 printf_ulong::uvalue#25 printf_ulong::uvalue#26 printf_ulong::uvalue#27 printf_ulong::uvalue#21 printf_ulong::uvalue#28 printf_ulong::uvalue#29 printf_ulong::uvalue#30 printf_ulong::uvalue#31 printf_ulong::uvalue#32 printf_ulong::uvalue#33 printf_ulong::uvalue#34 printf_ulong::uvalue#35 printf_ulong::uvalue#36 printf_ulong::uvalue#37 printf_ulong::uvalue#22 printf_ulong::uvalue#38 printf_ulong::uvalue#39 printf_ulong::uvalue#40 printf_ulong::uvalue#41 printf_ulong::uvalue#43 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 ]
reg byte x [ printf_uchar::uvalue#2 printf_uchar::uvalue#0 printf_uchar::uvalue#1 ]
reg byte a [ cputc::c#3 cputc::c#0 cputc::c#2 cputc::c#1 ]
reg byte x [ utoa::started#2 utoa::started#4 ]
reg byte x [ printf_number_buffer::format_min_length#3 ]
zp[1]:10 [ printf_number_buffer::format_zero_padding#10 utoa::digit#2 utoa::digit#1 ]
reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
zp[1]:11 [ ultoa::digit#2 ultoa::digit#1 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#0 ]
reg byte x [ ultoa::started#2 ultoa::started#4 ]
zp[2]:12 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 cputs::s#94 cputs::s#95 cputs::s#0 clrscr::line_text#5 clrscr::line_text#1 ]
zp[1]:14 [ uctoa::digit#2 uctoa::digit#1 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ]
zp[1]:15 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#0 uctoa::started#2 uctoa::started#4 ]
zp[1]:16 [ printf_padding::i#2 printf_padding::i#1 ]
reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ]
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]:17 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 strlen::str#2 strlen::str#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ]
reg byte x [ memset::c#4 ]
zp[1]:19 [ conio_cursor_x ]
zp[1]:20 [ conio_cursor_y ]
zp[2]:21 [ conio_line_text ]
zp[2]:23 [ conio_line_color ]
zp[1]:25 [ main::$19 ]
reg byte a [ kbhit::return#2 ]
reg byte a [ main::$2 ]
reg byte a [ kbhit::return#3 ]
reg byte a [ main::$6 ]
reg byte a [ kbhit::return#4 ]
reg byte a [ main::$10 ]
zp[4]:26 [ ror_var::val#0 rol_var::val#0 ror_fixed::val#0 rol_fixed::val#0 ]
reg byte a [ kbhit::return#10 ]
reg byte a [ main::$14 ]
reg byte x [ main::$16 ]
reg byte a [ kbhit::return#0 ]
reg byte a [ cputs::c#1 ]
reg byte a [ utoa::$11 ]
reg byte a [ utoa::$10 ]
zp[2]:30 [ utoa::digit_value#0 utoa_append::sub#0 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 ]
reg byte a [ ultoa::$11 ]
reg byte a [ ultoa::$10 ]
zp[4]:32 [ ultoa::digit_value#0 ultoa_append::sub#0 ]
zp[1]:36 [ uctoa::digit_value#0 uctoa_append::sub#0 printf_padding::pad#5 ]
reg byte x [ uctoa_append::return#0 ]
zp[2]:37 [ memcpy::src_end#0 ]
zp[2]:39 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
mem[12] [ printf_buffer ]