1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-29 18:49:42 +00:00

Fixed tests.

This commit is contained in:
jespergravgaard 2020-05-08 09:10:59 +02:00
parent aa66273149
commit 6a5aa72ed5
4 changed files with 3198 additions and 2866 deletions

View File

@ -62,7 +62,7 @@
// CIA#1 Port B: keyboard matrix rows and joystick #1. // CIA#1 Port B: keyboard matrix rows and joystick #1.
.label CONIO_CIA1_PORT_B = $dc01 .label CONIO_CIA1_PORT_B = $dc01
// The line buffer // The line buffer
.label LINE_BUFFER = $4000 .label LINE_BUFFER = $2000
// The two charsets used as screen buffers // The two charsets used as screen buffers
.label CANVAS1 = $3000 .label CANVAS1 = $3000
.label CANVAS2 = $3800 .label CANVAS2 = $3800
@ -73,13 +73,13 @@
// The default charset address // The default charset address
.label PETSCII = $1000 .label PETSCII = $1000
.label COSTAB = SINTAB+$40 .label COSTAB = SINTAB+$40
.label conio_cursor_x = $1a .label conio_cursor_x = $13
.label conio_cursor_y = $1b .label conio_cursor_y = $14
.label conio_cursor_text = $1c .label conio_cursor_text = $15
.label conio_cursor_color = $1e .label conio_cursor_color = $17
.label conio_textcolor = $20 .label conio_textcolor = $19
.label canvas_show_memory = $21 .label canvas_show_memory = $1a
.label canvas_show_flag = $22 .label canvas_show_flag = $1b
__bbegin: __bbegin:
// conio_cursor_x = 0 // conio_cursor_x = 0
// The current cursor x-position // The current cursor x-position
@ -109,7 +109,7 @@ __bbegin:
lda #toD0181_return lda #toD0181_return
sta.z canvas_show_memory sta.z canvas_show_memory
// canvas_show_flag = 0 // canvas_show_flag = 0
// Flag signalling that the canvas on screen needs to be updated. // Flag signalling that the canvas on screen needs to be updated.
// Set to 1 by the renderer when a new canvas is ready for showing, and to 0 by the raster when the canvas is shown on screen. // Set to 1 by the renderer when a new canvas is ready for showing, and to 0 by the raster when the canvas is shown on screen.
lda #0 lda #0
sta.z canvas_show_flag sta.z canvas_show_flag
@ -118,23 +118,23 @@ __bbegin:
main: { main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CANVAS1)/4&$f .const toD0181_return = (>(SCREEN&$3fff)*4)|(>CANVAS1)/4&$f
.const toD0182_return = (>(SCREEN&$3fff)*4)|(>CANVAS2)/4&$f .const toD0182_return = (>(SCREEN&$3fff)*4)|(>CANVAS2)/4&$f
.label __18 = $d .label __18 = $b
.label cols = 2 .label cols = 2
// Setup 16x16 canvas for rendering // Setup 16x16 canvas for rendering
.label screen = 4 .label screen = 4
.label y = $1a .label y = $13
.label x0 = $23 .label x0 = $1c
.label y0 = $24 .label y0 = $1d
.label x1 = $15 .label x1 = $f
.label y1 = $25 .label y1 = $1e
.label x2 = $15 .label x2 = $f
.label y2 = $26 .label y2 = $1f
.label p0_idx = 6 .label p0_idx = 6
.label p1_idx = 7 .label p1_idx = 7
.label p2_idx = 8 .label p2_idx = 8
// The current canvas being rendered to // The current canvas being rendered to
.label canvas = 9 .label canvas = 9
.label cyclecount = $d .label cyclecount = $b
// memset(CONSOLE, ' ', 40*25) // memset(CONSOLE, ' ', 40*25)
// Clear the console // Clear the console
ldx #' ' ldx #' '
@ -202,11 +202,11 @@ main: {
sta.z canvas sta.z canvas
lda #>CANVAS1 lda #>CANVAS1
sta.z canvas+1 sta.z canvas+1
lda #$88+$aa lda #$f0+$aa
sta.z p2_idx sta.z p2_idx
lda #$88+$f lda #$f0+$f
sta.z p1_idx sta.z p1_idx
lda #$88 lda #$f0
sta.z p0_idx sta.z p0_idx
__b8: __b8:
// clock_start() // clock_start()
@ -241,7 +241,8 @@ main: {
// line(LINE_BUFFER, x0, y0, x1, y1) // line(LINE_BUFFER, x0, y0, x1, y1)
lda.z x0 lda.z x0
sta.z line.x1 sta.z line.x1
ldx.z y0 lda.z y0
sta.z line.y1
lda.z y1 lda.z y1
sta.z line.y2 sta.z line.y2
jsr line jsr line
@ -255,14 +256,16 @@ main: {
// line(LINE_BUFFER, x1, y1, x2, y2) // line(LINE_BUFFER, x1, y1, x2, y2)
lda.z x1 lda.z x1
sta.z line.x1 sta.z line.x1
ldx.z y1 lda.z y1
sta.z line.y1
lda.z y2 lda.z y2
sta.z line.y2 sta.z line.y2
jsr line jsr line
// line(LINE_BUFFER, x2, y2, x0, y0) // line(LINE_BUFFER, x2, y2, x0, y0)
lda.z x2 lda.z x2
sta.z line.x1 sta.z line.x1
ldx.z y2 lda.z y2
sta.z line.y1
lda.z x0 lda.z x0
sta.z line.x2 sta.z line.x2
lda.z y0 lda.z y0
@ -274,13 +277,6 @@ main: {
inc.z p1_idx inc.z p1_idx
// p2_idx++; // p2_idx++;
inc.z p2_idx inc.z p2_idx
// eorfill(LINE_BUFFER, canvas)
lda.z canvas
sta.z eorfill.canvas
lda.z canvas+1
sta.z eorfill.canvas+1
// Fill canvas
jsr eorfill
// VICII->BORDER_COLOR = RED // VICII->BORDER_COLOR = RED
// Wait until the canvas on screen has been switched before starting work on the next frame // Wait until the canvas on screen has been switched before starting work on the next frame
lda #RED lda #RED
@ -293,11 +289,13 @@ main: {
// VICII->BORDER_COLOR = BLACK // VICII->BORDER_COLOR = BLACK
lda #BLACK lda #BLACK
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
// canvas_show_memory ^= toD018(SCREEN,CANVAS1)^toD018(SCREEN,CANVAS2) // eorfill(LINE_BUFFER, canvas)
// Swap canvas to show on screen (using XOR) lda.z canvas
lda #toD0181_return^toD0182_return sta.z eorfill.canvas
eor.z canvas_show_memory lda.z canvas+1
sta.z canvas_show_memory sta.z eorfill.canvas+1
// Fill canvas
jsr eorfill
// canvas ^= (CANVAS1^CANVAS2) // canvas ^= (CANVAS1^CANVAS2)
// swap canvas being rendered to (using XOR) // swap canvas being rendered to (using XOR)
lda #<CANVAS1^CANVAS2 lda #<CANVAS1^CANVAS2
@ -306,6 +304,11 @@ main: {
lda #>CANVAS1^CANVAS2 lda #>CANVAS1^CANVAS2
eor.z canvas+1 eor.z canvas+1
sta.z canvas+1 sta.z canvas+1
// canvas_show_memory ^= toD018(SCREEN,CANVAS1)^toD018(SCREEN,CANVAS2)
// Swap canvas to show on screen (using XOR)
lda #toD0181_return^toD0182_return
eor.z canvas_show_memory
sta.z canvas_show_memory
// canvas_show_flag = 1 // canvas_show_flag = 1
// Set flag used to signal when the canvas has been shown // Set flag used to signal when the canvas has been shown
lda #1 lda #1
@ -391,13 +394,13 @@ main: {
.byte 0 .byte 0
} }
// Print an unsigned int using a specific format // Print an unsigned int using a specific format
// printf_ulong(dword zp($d) uvalue) // printf_ulong(dword zp($b) uvalue)
printf_ulong: { printf_ulong: {
.const format_min_length = 6 .const format_min_length = 6
.const format_justify_left = 0 .const format_justify_left = 0
.const format_zero_padding = 0 .const format_zero_padding = 0
.const format_upper_case = 0 .const format_upper_case = 0
.label uvalue = $d .label uvalue = $b
// printf_buffer.sign = format.sign_always?'+':0 // printf_buffer.sign = format.sign_always?'+':0
// Handle any sign // Handle any sign
lda #0 lda #0
@ -422,14 +425,14 @@ printf_ulong: {
} }
// Print the contents of the number buffer using a specific format. // Print the contents of the number buffer using a specific format.
// This handles minimum length, zero-filling, and left/right justification from the format // This handles minimum length, zero-filling, and left/right justification from the format
// printf_number_buffer(byte zp($25) buffer_sign, byte register(X) format_min_length, byte zp($23) format_justify_left, byte zp($24) format_zero_padding, byte zp($15) format_upper_case) // printf_number_buffer(byte zp($1f) buffer_sign, byte register(X) format_min_length, byte zp($1d) format_justify_left, byte zp($1e) format_zero_padding, byte zp($f) format_upper_case)
printf_number_buffer: { printf_number_buffer: {
.label __19 = $13 .label __19 = $31
.label buffer_sign = $25 .label buffer_sign = $1f
.label padding = $16 .label padding = $10
.label format_zero_padding = $24 .label format_zero_padding = $1e
.label format_justify_left = $23 .label format_justify_left = $1d
.label format_upper_case = $15 .label format_upper_case = $f
// if(format.min_length) // if(format.min_length)
cpx #0 cpx #0
beq __b6 beq __b6
@ -534,11 +537,11 @@ printf_number_buffer: {
rts rts
} }
// Print a padding char a number of times // Print a padding char a number of times
// printf_padding(byte zp($18) pad, byte zp($17) length) // printf_padding(byte zp($12) pad, byte zp($11) length)
printf_padding: { printf_padding: {
.label i = $19 .label i = $1c
.label length = $17 .label length = $11
.label pad = $18 .label pad = $12
lda #0 lda #0
sta.z i sta.z i
__b1: __b1:
@ -602,9 +605,9 @@ cputc: {
} }
// Print a newline // Print a newline
cputln: { cputln: {
.label __1 = $1c .label __1 = $15
.label __2 = $1e .label __2 = $17
.label ln_offset = $2f .label ln_offset = $28
// ln_offset = CONIO_WIDTH - conio_cursor_x // ln_offset = CONIO_WIDTH - conio_cursor_x
sec sec
lda #$28 lda #$28
@ -643,8 +646,8 @@ cputln: {
} }
// Scroll the entire screen if the cursor is beyond the last line // Scroll the entire screen if the cursor is beyond the last line
cscroll: { cscroll: {
.label __7 = $1c .label __7 = $15
.label __8 = $1e .label __8 = $17
// if(conio_cursor_y==CONIO_HEIGHT) // if(conio_cursor_y==CONIO_HEIGHT)
lda #$19 lda #$19
cmp.z conio_cursor_y cmp.z conio_cursor_y
@ -716,12 +719,12 @@ cscroll: {
rts rts
} }
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zp($13) str, byte register(X) c, word zp($11) num) // memset(void* zp($31) str, byte register(X) c, word zp($28) num)
memset: { memset: {
.label end = $11 .label end = $28
.label dst = $13 .label dst = $31
.label num = $11 .label num = $28
.label str = $13 .label str = $31
// if(num>0) // if(num>0)
lda.z num lda.z num
bne !+ bne !+
@ -761,13 +764,13 @@ memset: {
} }
// Copy block of memory (forwards) // 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. // Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
// memcpy(void* zp($13) destination, void* zp($11) source) // memcpy(void* zp($31) destination, void* zp($28) source)
memcpy: { memcpy: {
.label src_end = $2f .label src_end = $2b
.label dst = $13 .label dst = $31
.label src = $11 .label src = $28
.label source = $11 .label source = $28
.label destination = $13 .label destination = $31
// src_end = (char*)source+num // src_end = (char*)source+num
lda.z source lda.z source
clc clc
@ -803,9 +806,9 @@ memcpy: {
jmp __b1 jmp __b1
} }
// Output a NUL-terminated string at the current cursor position // Output a NUL-terminated string at the current cursor position
// cputs(byte* zp($b) s) // cputs(byte* zp($2e) s)
cputs: { cputs: {
.label s = $b .label s = $2e
__b1: __b1:
// c=*s++ // c=*s++
ldy #0 ldy #0
@ -827,7 +830,7 @@ cputs: {
// Converts a string to uppercase. // Converts a string to uppercase.
strupr: { strupr: {
.label str = printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS .label str = printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
.label src = $b .label src = $2e
lda #<str lda #<str
sta.z src sta.z src
lda #>str lda #>str
@ -875,11 +878,11 @@ toupper: {
rts rts
} }
// Computes the length of the string str up to but not including the terminating null character. // Computes the length of the string str up to but not including the terminating null character.
// strlen(byte* zp($11) str) // strlen(byte* zp($28) str)
strlen: { strlen: {
.label len = $13 .label len = $31
.label str = $11 .label str = $28
.label return = $13 .label return = $31
lda #<0 lda #<0
sta.z len sta.z len
sta.z len+1 sta.z len+1
@ -913,13 +916,13 @@ strlen: {
// - value : The number to be converted to RADIX // - value : The number to be converted to RADIX
// - buffer : receives the string representing the number and zero-termination. // - buffer : receives the string representing the number and zero-termination.
// - radix : The radix to convert the number to (from the enum RADIX) // - radix : The radix to convert the number to (from the enum RADIX)
// ultoa(dword zp($d) value, byte* zp($11) buffer) // ultoa(dword zp($b) value, byte* zp($28) buffer)
ultoa: { ultoa: {
.const max_digits = $a .const max_digits = $a
.label digit_value = $27 .label digit_value = $20
.label buffer = $11 .label buffer = $28
.label digit = $23 .label digit = $1d
.label value = $d .label value = $b
lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
sta.z buffer sta.z buffer
lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
@ -1007,12 +1010,12 @@ ultoa: {
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. // - 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) // (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. // returns : the value reduced by sub * digit so that it is less than sub.
// ultoa_append(byte* zp($11) buffer, dword zp($d) value, dword zp($27) sub) // ultoa_append(byte* zp($28) buffer, dword zp($b) value, dword zp($20) sub)
ultoa_append: { ultoa_append: {
.label buffer = $11 .label buffer = $28
.label value = $d .label value = $b
.label sub = $27 .label sub = $20
.label return = $d .label return = $b
ldx #0 ldx #0
__b1: __b1:
// while (value >= sub) // while (value >= sub)
@ -1091,13 +1094,13 @@ printf_uchar: {
// - value : The number to be converted to RADIX // - value : The number to be converted to RADIX
// - buffer : receives the string representing the number and zero-termination. // - buffer : receives the string representing the number and zero-termination.
// - radix : The radix to convert the number to (from the enum RADIX) // - radix : The radix to convert the number to (from the enum RADIX)
// uctoa(byte register(X) value, byte* zp($13) buffer) // uctoa(byte register(X) value, byte* zp($31) buffer)
uctoa: { uctoa: {
.const max_digits = 2 .const max_digits = 2
.label digit_value = $2b .label digit_value = $24
.label buffer = $13 .label buffer = $31
.label digit = $24 .label digit = $1e
.label started = $25 .label started = $1f
lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
sta.z buffer sta.z buffer
lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
@ -1162,10 +1165,10 @@ uctoa: {
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. // - 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) // (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. // returns : the value reduced by sub * digit so that it is less than sub.
// uctoa_append(byte* zp($13) buffer, byte register(X) value, byte zp($2b) sub) // uctoa_append(byte* zp($31) buffer, byte register(X) value, byte zp($24) sub)
uctoa_append: { uctoa_append: {
.label buffer = $13 .label buffer = $31
.label sub = $2b .label sub = $24
ldy #0 ldy #0
__b1: __b1:
// while (value >= sub) // while (value >= sub)
@ -1214,7 +1217,7 @@ gotoxy: {
// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program). // Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program).
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start() // This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
clock: { clock: {
.label return = $d .label return = $b
// 0xffffffff - *CIA2_TIMER_AB // 0xffffffff - *CIA2_TIMER_AB
lda #<$ffffffff lda #<$ffffffff
sec sec
@ -1233,11 +1236,11 @@ clock: {
rts rts
} }
// EOR fill from the line buffer onto the canvas // EOR fill from the line buffer onto the canvas
// eorfill(byte* zp($1e) canvas) // eorfill(byte* zp($17) canvas)
eorfill: { eorfill: {
.label canvas = $1e .label canvas = $17
.label line_column = $1c .label line_column = $15
.label fill_column = $1e .label fill_column = $17
lda #<LINE_BUFFER lda #<LINE_BUFFER
sta.z line_column sta.z line_column
lda #>LINE_BUFFER lda #>LINE_BUFFER
@ -1288,37 +1291,40 @@ eorfill: {
} }
// Draw a EOR friendly line between two points // Draw a EOR friendly line between two points
// Uses bresenham line drawing routine // Uses bresenham line drawing routine
// line(byte zp($18) x1, byte register(X) y1, byte zp($15) x2, byte zp($16) y2) // line(byte zp($11) x1, byte zp($12) y1, byte zp($f) x2, byte zp($10) y2)
line: { line: {
.label x1 = $18 .label plot1___1 = $2a
.label x2 = $15 .label plot2___1 = $2d
.label y2 = $16 .label plot3___1 = $30
.label x = $18 .label x1 = $11
.label dx = $2b .label y1 = $12
.label dy = $2c .label x2 = $f
.label sx = $2d .label y2 = $10
.label sy = $2e .label x = $11
.label e1 = $19 .label y = $12
.label e = $17 .label dx = $24
.label dy = $25
.label sx = $26
.label sy = $27
.label plot1_column = $28
.label plot2_x = $11
.label plot2_column = $2b
.label plot3_column = $2e
.label plot4_column = $31
// abs_u8(x2-x1) // abs_u8(x2-x1)
lda.z x2 lda.z x2
sec sec
sbc.z x sbc.z x
tay
jsr abs_u8 jsr abs_u8
// abs_u8(x2-x1) // abs_u8(x2-x1)
tya
// dx = abs_u8(x2-x1) // dx = abs_u8(x2-x1)
sta.z dx sta.z dx
// abs_u8(y2-y1) // abs_u8(y2-y1)
txa lda.z y2
eor #$ff
sec sec
adc.z y2 sbc.z y
tay
jsr abs_u8 jsr abs_u8
// abs_u8(y2-y1) // abs_u8(y2-y1)
tya
// dy = abs_u8(y2-y1) // dy = abs_u8(y2-y1)
sta.z dy sta.z dy
// sgn_u8(x2-x1) // sgn_u8(x2-x1)
@ -1330,10 +1336,9 @@ line: {
// sx = sgn_u8(x2-x1) // sx = sgn_u8(x2-x1)
sta.z sx sta.z sx
// sgn_u8(y2-y1) // sgn_u8(y2-y1)
txa lda.z y2
eor #$ff
sec sec
adc.z y2 sbc.z y
jsr sgn_u8 jsr sgn_u8
// sgn_u8(y2-y1) // sgn_u8(y2-y1)
// sy = sgn_u8(y2-y1) // sy = sgn_u8(y2-y1)
@ -1343,7 +1348,7 @@ line: {
cmp.z sx cmp.z sx
bne __b1 bne __b1
// y++; // y++;
inx inc.z y
// y2++; // y2++;
inc.z y2 inc.z y2
__b1: __b1:
@ -1353,39 +1358,83 @@ line: {
bcc __b2 bcc __b2
// e = dy/2 // e = dy/2
lsr lsr
sta.z e tax
// plot(canvas, x, y) // x/8
jsr plot lda.z x
lsr
lsr
lsr
// column = plot_column[x/8]
asl
tay
lda plot_column,y
sta.z plot1_column
lda plot_column+1,y
sta.z plot1_column+1
// x&7
lda #7
and.z x
sta.z plot1___1
// column[y] |= plot_bit[x&7]
ldy.z y
lda (plot1_column),y
ldy.z plot1___1
ora plot_bit,y
ldy.z y
sta (plot1_column),y
__b5: __b5:
// y += sy // y += sy
txa lda.z y
clc clc
adc.z sy adc.z sy
tax sta.z y
// e += dx // e += dx
lda.z e txa
clc clc
adc.z dx adc.z dx
sta.z e tax
// if(dy<e) // if(dy<e)
lda.z dy lda.z dy
cmp.z e stx.z $ff
cmp.z $ff
bcs __b6 bcs __b6
// x += sx // x += sx
lda.z x lda.z plot2_x
clc clc
adc.z sx adc.z sx
sta.z x sta.z plot2_x
// e -= dy // e -= dy
lda.z e txa
sec sec
sbc.z dy sbc.z dy
sta.z e tax
// plot(canvas, x, y) // x/8
jsr plot lda.z plot2_x
lsr
lsr
lsr
// column = plot_column[x/8]
asl
tay
lda plot_column,y
sta.z plot2_column
lda plot_column+1,y
sta.z plot2_column+1
// x&7
lda #7
and.z plot2_x
sta.z plot2___1
// column[y] |= plot_bit[x&7]
ldy.z y
lda (plot2_column),y
ldy.z plot2___1
ora plot_bit,y
ldy.z y
sta (plot2_column),y
__b6: __b6:
// while (y != y2) // while (y != y2)
cpx.z y2 lda.z y
cmp.z y2
bne __b5 bne __b5
// } // }
rts rts
@ -1393,80 +1442,81 @@ line: {
// e = dx/2 // e = dx/2
lda.z dx lda.z dx
lsr lsr
sta.z e1 tax
__b8: __b8:
// plot(canvas, x, y) // x/8
jsr plot lda.z x
lsr
lsr
lsr
// column = plot_column[x/8]
asl
tay
lda plot_column,y
sta.z plot3_column
lda plot_column+1,y
sta.z plot3_column+1
// x&7
lda #7
and.z x
sta.z plot3___1
// column[y] |= plot_bit[x&7]
ldy.z y
lda (plot3_column),y
ldy.z plot3___1
ora plot_bit,y
ldy.z y
sta (plot3_column),y
// x += sx // x += sx
lda.z x lda.z x
clc clc
adc.z sx adc.z sx
sta.z x sta.z x
// e += dy // e += dy
lda.z e1
clc
adc.z dy
sta.z e1
// if(dx < e)
lda.z dx
cmp.z e1
bcs __b9
// y += sy
txa txa
clc clc
adc.z sy adc.z dy
tax tax
// if(dx < e)
lda.z dx
stx.z $ff
cmp.z $ff
bcs __b9
// y += sy
tya
clc
adc.z sy
sta.z y
// e -= dx // e -= dx
lda.z e1 txa
sec sec
sbc.z dx sbc.z dx
sta.z e1 tax
__b9: __b9:
// while (x != x2) // while (x != x2)
lda.z x lda.z x
cmp.z x2 cmp.z x2
bne __b8 bne __b8
// plot(canvas, x, y)
jsr plot
rts
}
// Plot a single point on the canvas
// plot(byte zp($18) x, byte register(X) y)
plot: {
.label __2 = $31
.label x = $18
.label column = $2f
// x/8 // x/8
lda.z x
lsr lsr
lsr lsr
lsr lsr
// canvas + plot_column[x/8] // column = plot_column[x/8]
asl asl
// column = canvas + plot_column[x/8]
tay tay
clc lda plot_column,y
lda #<LINE_BUFFER sta.z plot4_column
adc plot_column,y lda plot_column+1,y
sta.z column sta.z plot4_column+1
lda #>LINE_BUFFER
adc plot_column+1,y
sta.z column+1
// x&7 // x&7
lda #7 lda #7
and.z x and.z x
sta.z __2
// column[y] |= plot_bit[x&7] // column[y] |= plot_bit[x&7]
// Plot the bit ldy.z y
txa tax
tay lda (plot4_column),y
lda (column),y ora plot_bit,x
ldy.z __2 sta (plot4_column),y
stx.z $ff
ora plot_bit,y
ldy.z $ff
sta (column),y
// }
rts rts
} }
// Get the sign of a 8-bit unsigned number treated as a signed number. // Get the sign of a 8-bit unsigned number treated as a signed number.
@ -1486,21 +1536,20 @@ sgn_u8: {
rts rts
} }
// Get the absolute value of a u-bit unsigned number treated as a signed number. // Get the absolute value of a u-bit unsigned number treated as a signed number.
// abs_u8(byte register(Y) u) // abs_u8(byte register(A) u)
abs_u8: { abs_u8: {
// u & 0x80 // u & 0x80
tya ldx #$80
and #$80 axs #0
// if(u & 0x80) // if(u & 0x80)
cmp #0 cpx #0
bne __b1 bne __b1
rts rts
__b1: __b1:
// return -u; // return -u;
dey
tya
eor #$ff eor #$ff
tay clc
adc #1
// } // }
rts rts
} }
@ -1655,7 +1704,7 @@ SINTAB:
.fill $200, 63 + 63*sin(i*2*PI/$100) .fill $200, 63 + 63*sin(i*2*PI/$100)
// Column offsets // Column offsets
plot_column: .word 0, 1*$80, 2*$80, 3*$80, 4*$80, 5*$80, 6*$80, 7*$80, 8*$80, 9*$80, $a*$80, $b*$80, $c*$80, $d*$80, $e*$80, $f*$80 plot_column: .word LINE_BUFFER, LINE_BUFFER+1*$80, LINE_BUFFER+2*$80, LINE_BUFFER+3*$80, LINE_BUFFER+4*$80, LINE_BUFFER+5*$80, LINE_BUFFER+6*$80, LINE_BUFFER+7*$80, LINE_BUFFER+8*$80, LINE_BUFFER+9*$80, LINE_BUFFER+$a*$80, LINE_BUFFER+$b*$80, LINE_BUFFER+$c*$80, LINE_BUFFER+$d*$80, LINE_BUFFER+$e*$80, LINE_BUFFER+$f*$80
// The bits used for plotting a pixel // The bits used for plotting a pixel
plot_bit: .byte $80, $40, $20, $10, 8, 4, 2, 1 plot_bit: .byte $80, $40, $20, $10, 8, 4, 2, 1
// Buffer used for stringified number being printed // Buffer used for stringified number being printed

View File

@ -52,9 +52,9 @@ main::@14: scope:[main] from main::@3
to:main::@7 to:main::@7
main::@7: scope:[main] from main::@14 main::@26 main::@7: scope:[main] from main::@14 main::@26
[25] (byte*) main::canvas#10 ← phi( main::@14/(const nomodify byte*) CANVAS1 main::@26/(byte*) main::canvas#24 ) [25] (byte*) main::canvas#10 ← phi( main::@14/(const nomodify byte*) CANVAS1 main::@26/(byte*) main::canvas#24 )
[25] (byte) main::p2_idx#2 ← phi( main::@14/(byte) $88+(byte) $aa main::@26/(byte) main::p2_idx#1 ) [25] (byte) main::p2_idx#2 ← phi( main::@14/(byte) $f0+(byte) $aa main::@26/(byte) main::p2_idx#1 )
[25] (byte) main::p1_idx#2 ← phi( main::@14/(byte) $88+(byte) $f main::@26/(byte) main::p1_idx#1 ) [25] (byte) main::p1_idx#2 ← phi( main::@14/(byte) $f0+(byte) $f main::@26/(byte) main::p1_idx#1 )
[25] (byte) main::p0_idx#11 ← phi( main::@14/(byte) $88 main::@26/(byte) main::p0_idx#1 ) [25] (byte) main::p0_idx#11 ← phi( main::@14/(byte) $f0 main::@26/(byte) main::p0_idx#1 )
to:main::@8 to:main::@8
main::@8: scope:[main] from main::@7 main::@8: scope:[main] from main::@7
[26] phi() [26] phi()
@ -95,27 +95,27 @@ main::@19: scope:[main] from main::@18
[51] (byte) main::p0_idx#1 ← ++ (byte) main::p0_idx#11 [51] (byte) main::p0_idx#1 ← ++ (byte) main::p0_idx#11
[52] (byte) main::p1_idx#1 ← ++ (byte) main::p1_idx#2 [52] (byte) main::p1_idx#1 ← ++ (byte) main::p1_idx#2
[53] (byte) main::p2_idx#1 ← ++ (byte) main::p2_idx#2 [53] (byte) main::p2_idx#1 ← ++ (byte) main::p2_idx#2
[54] (byte*) eorfill::canvas#0 ← (byte*) main::canvas#10 [54] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (const nomodify byte) RED
[55] call eorfill
to:main::@20
main::@20: scope:[main] from main::@19
[56] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (const nomodify byte) RED
to:main::@9 to:main::@9
main::@9: scope:[main] from main::@20 main::@9 main::@9: scope:[main] from main::@19 main::@9
[57] if((byte) 0!=(volatile byte) canvas_show_flag) goto main::@9 [55] if((byte) 0!=(volatile byte) canvas_show_flag) goto main::@9
to:main::@10 to:main::@10
main::@10: scope:[main] from main::@9 main::@10: scope:[main] from main::@9
[58] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (const nomodify byte) BLACK [56] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (const nomodify byte) BLACK
[57] (byte*) eorfill::canvas#0 ← (byte*) main::canvas#10
[58] call eorfill
to:main::@20
main::@20: scope:[main] from main::@10
[59] (word) main::canvas#1 ← (byte*) main::canvas#10 ^ (const nomodify byte*) CANVAS1^(const nomodify byte*) CANVAS2
to:main::toD0181 to:main::toD0181
main::toD0181: scope:[main] from main::@10 main::toD0181: scope:[main] from main::@20
[59] phi() [60] phi()
to:main::toD0182 to:main::toD0182
main::toD0182: scope:[main] from main::toD0181 main::toD0182: scope:[main] from main::toD0181
[60] phi() [61] phi()
to:main::@11 to:main::@11
main::@11: scope:[main] from main::toD0182 main::@11: scope:[main] from main::toD0182
[61] (volatile byte) canvas_show_memory ← (volatile byte) canvas_show_memory ^ (const byte) main::toD0181_return#0^(const byte) main::toD0182_return#0 [62] (volatile byte) canvas_show_memory ← (volatile byte) canvas_show_memory ^ (const byte) main::toD0181_return#0^(const byte) main::toD0182_return#0
[62] (word) main::canvas#1 ← (byte*) main::canvas#10 ^ (const nomodify byte*) CANVAS1^(const nomodify byte*) CANVAS2
[63] (volatile byte) canvas_show_flag ← (byte) 1 [63] (volatile byte) canvas_show_flag ← (byte) 1
[64] call clock [64] call clock
[65] (dword) clock::return#2 ← (dword) clock::return#0 [65] (dword) clock::return#2 ← (dword) clock::return#0
@ -650,7 +650,7 @@ clock::@return: scope:[clock] from clock
to:@return to:@return
(void()) eorfill((byte*) eorfill::line_buffer , (byte*) eorfill::canvas) (void()) eorfill((byte*) eorfill::line_buffer , (byte*) eorfill::canvas)
eorfill: scope:[eorfill] from main::@19 eorfill: scope:[eorfill] from main::@10
[294] phi() [294] phi()
to:eorfill::@1 to:eorfill::@1
eorfill::@1: scope:[eorfill] from eorfill eorfill::@5 eorfill::@1: scope:[eorfill] from eorfill eorfill::@5
@ -684,10 +684,10 @@ eorfill::@4: scope:[eorfill] from eorfill::@3
(void()) line((byte*) line::canvas , (byte) line::x1 , (byte) line::y1 , (byte) line::x2 , (byte) line::y2) (void()) line((byte*) line::canvas , (byte) line::x1 , (byte) line::y1 , (byte) line::x2 , (byte) line::y2)
line: scope:[line] from main::@16 main::@17 main::@18 line: scope:[line] from main::@16 main::@17 main::@18
[307] (byte) line::y2#10 ← phi( main::@16/(byte) line::y2#0 main::@17/(byte) line::y2#1 main::@18/(byte) line::y2#2 ) [307] (byte) line::y2#10 ← phi( main::@16/(byte) line::y2#0 main::@17/(byte) line::y2#1 main::@18/(byte) line::y2#2 )
[307] (byte) line::x2#10 ← phi( main::@16/(byte) line::x2#0 main::@17/(byte) line::x2#1 main::@18/(byte) line::x2#2 ) [307] (byte) line::x2#11 ← phi( main::@16/(byte) line::x2#0 main::@17/(byte) line::x2#1 main::@18/(byte) line::x2#2 )
[307] (byte) line::y#0 ← phi( main::@16/(byte) line::y1#0 main::@17/(byte) line::y1#1 main::@18/(byte) line::y1#2 ) [307] (byte) line::y#0 ← phi( main::@16/(byte) line::y1#0 main::@17/(byte) line::y1#1 main::@18/(byte) line::y1#2 )
[307] (byte) line::x#0 ← phi( main::@16/(byte) line::x1#0 main::@17/(byte) line::x1#1 main::@18/(byte) line::x1#2 ) [307] (byte) line::x#0 ← phi( main::@16/(byte) line::x1#0 main::@17/(byte) line::x1#1 main::@18/(byte) line::x1#2 )
[308] (byte) abs_u8::u#0 ← (byte) line::x2#10 - (byte) line::x#0 [308] (byte) abs_u8::u#0 ← (byte) line::x2#11 - (byte) line::x#0
[309] call abs_u8 [309] call abs_u8
[310] (byte) abs_u8::return#0 ← (byte) abs_u8::return#4 [310] (byte) abs_u8::return#0 ← (byte) abs_u8::return#4
to:line::@12 to:line::@12
@ -699,7 +699,7 @@ line::@12: scope:[line] from line
to:line::@13 to:line::@13
line::@13: scope:[line] from line::@12 line::@13: scope:[line] from line::@12
[315] (byte) line::dy#0 ← (byte) abs_u8::return#1 [315] (byte) line::dy#0 ← (byte) abs_u8::return#1
[316] (byte) sgn_u8::u#0 ← (byte) line::x2#10 - (byte) line::x#0 [316] (byte) sgn_u8::u#0 ← (byte) line::x2#11 - (byte) line::x#0
[317] call sgn_u8 [317] call sgn_u8
[318] (byte) sgn_u8::return#0 ← (byte) sgn_u8::return#4 [318] (byte) sgn_u8::return#0 ← (byte) sgn_u8::return#4
to:line::@14 to:line::@14
@ -724,185 +724,185 @@ line::@1: scope:[line] from line::@15 line::@3
to:line::@4 to:line::@4
line::@4: scope:[line] from line::@1 line::@4: scope:[line] from line::@1
[329] (byte) line::e#0 ← (byte) line::dy#0 >> (byte) 1 [329] (byte) line::e#0 ← (byte) line::dy#0 >> (byte) 1
[330] (byte) plot::x#0 ← (byte) line::x#0 to:line::plot1
[331] (byte) plot::y#0 ← (byte) line::y#13 line::plot1: scope:[line] from line::@4
[332] call plot [330] (byte~) line::plot1_$0 ← (byte) line::x#0 >> (byte) 3
[331] (byte~) line::plot1_$2 ← (byte~) line::plot1_$0 << (byte) 1
[332] (byte*) line::plot1_column#0 ← *((const byte**) plot_column + (byte~) line::plot1_$2)
[333] (byte~) line::plot1_$1 ← (byte) line::x#0 & (byte) 7
[334] *((byte*) line::plot1_column#0 + (byte) line::y#13) ← *((byte*) line::plot1_column#0 + (byte) line::y#13) | *((const byte*) plot_bit + (byte~) line::plot1_$1)
to:line::@5 to:line::@5
line::@5: scope:[line] from line::@4 line::@6 line::@5: scope:[line] from line::@6 line::plot1
[333] (byte) line::x#10 ← phi( line::@4/(byte) line::x#0 line::@6/(byte) line::x#16 ) [335] (byte) line::x#10 ← phi( line::@6/(byte) line::x#16 line::plot1/(byte) line::x#0 )
[333] (byte) line::e#3 ← phi( line::@4/(byte) line::e#0 line::@6/(byte) line::e#6 ) [335] (byte) line::e#3 ← phi( line::@6/(byte) line::e#5 line::plot1/(byte) line::e#0 )
[333] (byte) line::y#6 ← phi( line::@4/(byte) line::y#13 line::@6/(byte) line::y#15 ) [335] (byte) line::y#6 ← phi( line::@6/(byte) line::y#15 line::plot1/(byte) line::y#13 )
[334] (byte) line::y#15 ← (byte) line::y#6 + (byte) line::sy#0 [336] (byte) line::y#15 ← (byte) line::y#6 + (byte) line::sy#0
[335] (byte) line::e#1 ← (byte) line::e#3 + (byte) line::dx#0 [337] (byte) line::e#1 ← (byte) line::e#3 + (byte) line::dx#0
[336] if((byte) line::dy#0>=(byte) line::e#1) goto line::@6 [338] if((byte) line::dy#0>=(byte) line::e#1) goto line::@6
to:line::@7 to:line::@7
line::@7: scope:[line] from line::@5 line::@7: scope:[line] from line::@5
[337] (byte) line::x#1 ← (byte) line::x#10 + (byte) line::sx#0 [339] (byte) line::plot2_x#0 ← (byte) line::x#10 + (byte) line::sx#0
[338] (byte) line::e#2 ← (byte) line::e#1 - (byte) line::dy#0 [340] (byte) line::e#2 ← (byte) line::e#1 - (byte) line::dy#0
[339] (byte) plot::x#1 ← (byte) line::x#1 to:line::plot2
[340] (byte) plot::y#1 ← (byte) line::y#15 line::plot2: scope:[line] from line::@7
[341] call plot [341] (byte~) line::plot2_$0 ← (byte) line::plot2_x#0 >> (byte) 3
[342] (byte~) line::plot2_$2 ← (byte~) line::plot2_$0 << (byte) 1
[343] (byte*) line::plot2_column#0 ← *((const byte**) plot_column + (byte~) line::plot2_$2)
[344] (byte~) line::plot2_$1 ← (byte) line::plot2_x#0 & (byte) 7
[345] *((byte*) line::plot2_column#0 + (byte) line::y#15) ← *((byte*) line::plot2_column#0 + (byte) line::y#15) | *((const byte*) plot_bit + (byte~) line::plot2_$1)
to:line::@6 to:line::@6
line::@6: scope:[line] from line::@5 line::@7 line::@6: scope:[line] from line::@5 line::plot2
[342] (byte) line::x#16 ← phi( line::@7/(byte) line::x#1 line::@5/(byte) line::x#10 ) [346] (byte) line::x#16 ← phi( line::@5/(byte) line::x#10 line::plot2/(byte) line::plot2_x#0 )
[342] (byte) line::e#6 ← phi( line::@7/(byte) line::e#2 line::@5/(byte) line::e#1 ) [346] (byte) line::e#5 ← phi( line::@5/(byte) line::e#1 line::plot2/(byte) line::e#2 )
[343] if((byte) line::y#15!=(byte) line::y2#13) goto line::@5 [347] if((byte) line::y#15!=(byte) line::y2#13) goto line::@5
to:line::@return to:line::@return
line::@return: scope:[line] from line::@11 line::@6 line::@return: scope:[line] from line::@6 line::plot4
[344] return [348] return
to:@return to:@return
line::@2: scope:[line] from line::@1 line::@2: scope:[line] from line::@1
[345] (byte) line::e1#0 ← (byte) line::dx#0 >> (byte) 1 [349] (byte) line::e1#0 ← (byte) line::dx#0 >> (byte) 1
to:line::@8 to:line::@8
line::@8: scope:[line] from line::@2 line::@9 line::@8: scope:[line] from line::@2 line::@9
[346] (byte) line::e1#3 ← phi( line::@2/(byte) line::e1#0 line::@9/(byte) line::e1#6 ) [350] (byte) line::e1#3 ← phi( line::@2/(byte) line::e1#0 line::@9/(byte) line::e1#7 )
[346] (byte) line::y#10 ← phi( line::@2/(byte) line::y#13 line::@9/(byte) line::y#11 ) [350] (byte) line::y#10 ← phi( line::@2/(byte) line::y#13 line::@9/(byte) line::y#11 )
[346] (byte) line::x#5 ← phi( line::@2/(byte) line::x#0 line::@9/(byte) line::x#12 ) [350] (byte) line::x#12 ← phi( line::@2/(byte) line::x#0 line::@9/(byte) line::x#13 )
[347] (byte) plot::x#2 ← (byte) line::x#5 to:line::plot3
[348] (byte) plot::y#2 ← (byte) line::y#10 line::plot3: scope:[line] from line::@8
[349] call plot [351] (byte~) line::plot3_$0 ← (byte) line::x#12 >> (byte) 3
to:line::@16 [352] (byte~) line::plot3_$2 ← (byte~) line::plot3_$0 << (byte) 1
line::@16: scope:[line] from line::@8 [353] (byte*) line::plot3_column#0 ← *((const byte**) plot_column + (byte~) line::plot3_$2)
[350] (byte) line::x#12 ← (byte) line::x#5 + (byte) line::sx#0 [354] (byte~) line::plot3_$1 ← (byte) line::x#12 & (byte) 7
[351] (byte) line::e1#1 ← (byte) line::e1#3 + (byte) line::dy#0 [355] *((byte*) line::plot3_column#0 + (byte) line::y#10) ← *((byte*) line::plot3_column#0 + (byte) line::y#10) | *((const byte*) plot_bit + (byte~) line::plot3_$1)
[352] if((byte) line::dx#0>=(byte) line::e1#1) goto line::@9
to:line::@10
line::@10: scope:[line] from line::@16
[353] (byte) line::y#3 ← (byte) line::y#10 + (byte) line::sy#0
[354] (byte) line::e1#2 ← (byte) line::e1#1 - (byte) line::dx#0
to:line::@9
line::@9: scope:[line] from line::@10 line::@16
[355] (byte) line::e1#6 ← phi( line::@10/(byte) line::e1#2 line::@16/(byte) line::e1#1 )
[355] (byte) line::y#11 ← phi( line::@10/(byte) line::y#3 line::@16/(byte) line::y#10 )
[356] if((byte) line::x#12!=(byte) line::x2#10) goto line::@8
to:line::@11 to:line::@11
line::@11: scope:[line] from line::@9 line::@11: scope:[line] from line::plot3
[357] (byte) plot::x#3 ← (byte) line::x#12 [356] (byte) line::x#13 ← (byte) line::x#12 + (byte) line::sx#0
[358] (byte) plot::y#3 ← (byte) line::y#11 [357] (byte) line::e1#1 ← (byte) line::e1#3 + (byte) line::dy#0
[359] call plot [358] if((byte) line::dx#0>=(byte) line::e1#1) goto line::@9
to:line::@10
line::@10: scope:[line] from line::@11
[359] (byte) line::y#3 ← (byte) line::y#10 + (byte) line::sy#0
[360] (byte) line::e1#2 ← (byte) line::e1#1 - (byte) line::dx#0
to:line::@9
line::@9: scope:[line] from line::@10 line::@11
[361] (byte) line::e1#7 ← phi( line::@10/(byte) line::e1#2 line::@11/(byte) line::e1#1 )
[361] (byte) line::y#11 ← phi( line::@10/(byte) line::y#3 line::@11/(byte) line::y#10 )
[362] if((byte) line::x#13!=(byte) line::x2#11) goto line::@8
to:line::plot4
line::plot4: scope:[line] from line::@9
[363] (byte~) line::plot4_$0 ← (byte) line::x#13 >> (byte) 3
[364] (byte~) line::plot4_$2 ← (byte~) line::plot4_$0 << (byte) 1
[365] (byte*) line::plot4_column#0 ← *((const byte**) plot_column + (byte~) line::plot4_$2)
[366] (byte~) line::plot4_$1 ← (byte) line::x#13 & (byte) 7
[367] *((byte*) line::plot4_column#0 + (byte) line::y#11) ← *((byte*) line::plot4_column#0 + (byte) line::y#11) | *((const byte*) plot_bit + (byte~) line::plot4_$1)
to:line::@return to:line::@return
(void()) plot((byte*) plot::canvas , (byte) plot::x , (byte) plot::y)
plot: scope:[plot] from line::@11 line::@4 line::@7 line::@8
[360] (byte) plot::y#4 ← phi( line::@11/(byte) plot::y#3 line::@4/(byte) plot::y#0 line::@7/(byte) plot::y#1 line::@8/(byte) plot::y#2 )
[360] (byte) plot::x#4 ← phi( line::@11/(byte) plot::x#3 line::@4/(byte) plot::x#0 line::@7/(byte) plot::x#1 line::@8/(byte) plot::x#2 )
[361] (byte~) plot::$0 ← (byte) plot::x#4 >> (byte) 3
[362] (byte~) plot::$3 ← (byte~) plot::$0 << (byte) 1
[363] (byte*) plot::column#0 ← (const nomodify byte*) LINE_BUFFER + *((const word*) plot_column + (byte~) plot::$3)
[364] (byte~) plot::$2 ← (byte) plot::x#4 & (byte) 7
[365] *((byte*) plot::column#0 + (byte) plot::y#4) ← *((byte*) plot::column#0 + (byte) plot::y#4) | *((const byte*) plot_bit + (byte~) plot::$2)
to:plot::@return
plot::@return: scope:[plot] from plot
[366] return
to:@return
(byte()) sgn_u8((byte) sgn_u8::u) (byte()) sgn_u8((byte) sgn_u8::u)
sgn_u8: scope:[sgn_u8] from line::@13 line::@14 sgn_u8: scope:[sgn_u8] from line::@13 line::@14
[367] (byte) sgn_u8::u#2 ← phi( line::@13/(byte) sgn_u8::u#0 line::@14/(byte) sgn_u8::u#1 ) [368] (byte) sgn_u8::u#2 ← phi( line::@13/(byte) sgn_u8::u#0 line::@14/(byte) sgn_u8::u#1 )
[368] (byte~) sgn_u8::$0 ← (byte) sgn_u8::u#2 & (byte) $80 [369] (byte~) sgn_u8::$0 ← (byte) sgn_u8::u#2 & (byte) $80
[369] if((byte) 0!=(byte~) sgn_u8::$0) goto sgn_u8::@1 [370] if((byte) 0!=(byte~) sgn_u8::$0) goto sgn_u8::@1
to:sgn_u8::@return to:sgn_u8::@return
sgn_u8::@1: scope:[sgn_u8] from sgn_u8 sgn_u8::@1: scope:[sgn_u8] from sgn_u8
[370] phi() [371] phi()
to:sgn_u8::@return to:sgn_u8::@return
sgn_u8::@return: scope:[sgn_u8] from sgn_u8 sgn_u8::@1 sgn_u8::@return: scope:[sgn_u8] from sgn_u8 sgn_u8::@1
[371] (byte) sgn_u8::return#4 ← phi( sgn_u8::@1/(byte) -1 sgn_u8/(byte) 1 ) [372] (byte) sgn_u8::return#4 ← phi( sgn_u8::@1/(byte) -1 sgn_u8/(byte) 1 )
[372] return [373] return
to:@return to:@return
(byte()) abs_u8((byte) abs_u8::u) (byte()) abs_u8((byte) abs_u8::u)
abs_u8: scope:[abs_u8] from line line::@12 abs_u8: scope:[abs_u8] from line line::@12
[373] (byte) abs_u8::u#2 ← phi( line/(byte) abs_u8::u#0 line::@12/(byte) abs_u8::u#1 ) [374] (byte) abs_u8::u#2 ← phi( line/(byte) abs_u8::u#0 line::@12/(byte) abs_u8::u#1 )
[374] (byte~) abs_u8::$0 ← (byte) abs_u8::u#2 & (byte) $80 [375] (byte~) abs_u8::$0 ← (byte) abs_u8::u#2 & (byte) $80
[375] if((byte) 0!=(byte~) abs_u8::$0) goto abs_u8::@1 [376] if((byte) 0!=(byte~) abs_u8::$0) goto abs_u8::@1
to:abs_u8::@return to:abs_u8::@return
abs_u8::@1: scope:[abs_u8] from abs_u8 abs_u8::@1: scope:[abs_u8] from abs_u8
[376] (byte) abs_u8::return#2 ← - (byte) abs_u8::u#2 [377] (byte) abs_u8::return#2 ← - (byte) abs_u8::u#2
to:abs_u8::@return to:abs_u8::@return
abs_u8::@return: scope:[abs_u8] from abs_u8 abs_u8::@1 abs_u8::@return: scope:[abs_u8] from abs_u8 abs_u8::@1
[377] (byte) abs_u8::return#4 ← phi( abs_u8::@1/(byte) abs_u8::return#2 abs_u8/(byte) abs_u8::u#2 ) [378] (byte) abs_u8::return#4 ← phi( abs_u8::@1/(byte) abs_u8::return#2 abs_u8/(byte) abs_u8::u#2 )
[378] return [379] return
to:@return to:@return
(void()) clock_start() (void()) clock_start()
clock_start: scope:[clock_start] from main::@8 clock_start: scope:[clock_start] from main::@8
[379] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) ← (byte) 0 [380] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) ← (byte) 0
[380] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) ← (const nomodify byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [381] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) ← (const nomodify byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
[381] *((const nomodify dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [382] *((const nomodify dword*) CIA2_TIMER_AB) ← (dword) $ffffffff
[382] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) ← (const nomodify byte) CIA_TIMER_CONTROL_START|(const nomodify byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [383] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) ← (const nomodify byte) CIA_TIMER_CONTROL_START|(const nomodify byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
[383] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) ← (const nomodify byte) CIA_TIMER_CONTROL_START [384] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) ← (const nomodify byte) CIA_TIMER_CONTROL_START
to:clock_start::@return to:clock_start::@return
clock_start::@return: scope:[clock_start] from clock_start clock_start::@return: scope:[clock_start] from clock_start
[384] return [385] return
to:@return to:@return
(byte()) textcolor((byte) textcolor::color) (byte()) textcolor((byte) textcolor::color)
textcolor: scope:[textcolor] from main::@14 textcolor: scope:[textcolor] from main::@14
[385] (byte) conio_textcolor ← (const nomodify byte) WHITE [386] (byte) conio_textcolor ← (const nomodify byte) WHITE
to:textcolor::@return to:textcolor::@return
textcolor::@return: scope:[textcolor] from textcolor textcolor::@return: scope:[textcolor] from textcolor
[386] return [387] return
to:@return to:@return
(void()) setup_irq() (void()) setup_irq()
setup_irq: scope:[setup_irq] from main::@3 setup_irq: scope:[setup_irq] from main::@3
asm { sei } asm { sei }
[388] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR [389] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR
[389] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & (byte) $7f [390] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & (byte) $7f
[390] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (const nomodify byte) BORDER_YPOS_BOTTOM-(byte) 8 [391] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (const nomodify byte) BORDER_YPOS_BOTTOM-(byte) 8
[391] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER [392] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER
[392] *((const nomodify void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() [393] *((const nomodify void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1()
asm { cli } asm { cli }
to:setup_irq::@return to:setup_irq::@return
setup_irq::@return: scope:[setup_irq] from setup_irq setup_irq::@return: scope:[setup_irq] from setup_irq
[394] return [395] return
to:@return to:@return
interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
irq_bottom_2: scope:[irq_bottom_2] from irq_bottom_2: scope:[irq_bottom_2] from
[395] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (const nomodify byte) BLACK [396] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (const nomodify byte) BLACK
[396] call kbhit [397] call kbhit
[397] (byte) kbhit::return#2 ← (byte) kbhit::return#0 [398] (byte) kbhit::return#2 ← (byte) kbhit::return#0
to:irq_bottom_2::@3 to:irq_bottom_2::@3
irq_bottom_2::@3: scope:[irq_bottom_2] from irq_bottom_2 irq_bottom_2::@3: scope:[irq_bottom_2] from irq_bottom_2
[398] (byte~) irq_bottom_2::$0 ← (byte) kbhit::return#2 [399] (byte~) irq_bottom_2::$0 ← (byte) kbhit::return#2
[399] if((byte) 0!=(byte~) irq_bottom_2::$0) goto irq_bottom_2::@1 [400] if((byte) 0!=(byte~) irq_bottom_2::$0) goto irq_bottom_2::@1
to:irq_bottom_2::@2 to:irq_bottom_2::@2
irq_bottom_2::@2: scope:[irq_bottom_2] from irq_bottom_2::@3 irq_bottom_2::@2: scope:[irq_bottom_2] from irq_bottom_2::@3
[400] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (volatile byte) canvas_show_memory [401] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (volatile byte) canvas_show_memory
to:irq_bottom_2::@1 to:irq_bottom_2::@1
irq_bottom_2::@1: scope:[irq_bottom_2] from irq_bottom_2::@2 irq_bottom_2::@3 irq_bottom_2::@1: scope:[irq_bottom_2] from irq_bottom_2::@2 irq_bottom_2::@3
[401] (volatile byte) canvas_show_flag ← (byte) 0 [402] (volatile byte) canvas_show_flag ← (byte) 0
[402] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER [403] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER
[403] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (const nomodify byte) BORDER_YPOS_BOTTOM-(byte) 8 [404] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (const nomodify byte) BORDER_YPOS_BOTTOM-(byte) 8
[404] *((const nomodify void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() [405] *((const nomodify void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1()
to:irq_bottom_2::@return to:irq_bottom_2::@return
irq_bottom_2::@return: scope:[irq_bottom_2] from irq_bottom_2::@1 irq_bottom_2::@return: scope:[irq_bottom_2] from irq_bottom_2::@1
[405] return [406] return
to:@return to:@return
(byte()) kbhit() (byte()) kbhit()
kbhit: scope:[kbhit] from irq_bottom_2 kbhit: scope:[kbhit] from irq_bottom_2
[406] *((const nomodify byte*) CONIO_CIA1_PORT_A) ← (byte) 0 [407] *((const nomodify byte*) CONIO_CIA1_PORT_A) ← (byte) 0
[407] (byte) kbhit::return#0 ← ~ *((const nomodify byte*) CONIO_CIA1_PORT_B) [408] (byte) kbhit::return#0 ← ~ *((const nomodify byte*) CONIO_CIA1_PORT_B)
to:kbhit::@return to:kbhit::@return
kbhit::@return: scope:[kbhit] from kbhit kbhit::@return: scope:[kbhit] from kbhit
[408] return [409] return
to:@return to:@return
interrupt(KERNEL_MIN)(void()) irq_bottom_1() interrupt(KERNEL_MIN)(void()) irq_bottom_1()
irq_bottom_1: scope:[irq_bottom_1] from irq_bottom_1: scope:[irq_bottom_1] from
[409] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (const nomodify byte) WHITE [410] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (const nomodify byte) WHITE
to:irq_bottom_1::toD0181 to:irq_bottom_1::toD0181
irq_bottom_1::toD0181: scope:[irq_bottom_1] from irq_bottom_1 irq_bottom_1::toD0181: scope:[irq_bottom_1] from irq_bottom_1
[410] phi() [411] phi()
to:irq_bottom_1::@1 to:irq_bottom_1::@1
irq_bottom_1::@1: scope:[irq_bottom_1] from irq_bottom_1::toD0181 irq_bottom_1::@1: scope:[irq_bottom_1] from irq_bottom_1::toD0181
[411] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (const byte) irq_bottom_1::toD0181_return#0 [412] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (const byte) irq_bottom_1::toD0181_return#0
[412] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER [413] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER
[413] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (const nomodify byte) BORDER_YPOS_BOTTOM [414] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (const nomodify byte) BORDER_YPOS_BOTTOM
[414] *((const nomodify void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() [415] *((const nomodify void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
to:irq_bottom_1::@return to:irq_bottom_1::@return
irq_bottom_1::@return: scope:[irq_bottom_1] from irq_bottom_1::@1 irq_bottom_1::@return: scope:[irq_bottom_1] from irq_bottom_1::@1
[415] return [416] return
to:@return to:@return

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,7 @@
(const byte*) DIGITS[] = (byte*) "0123456789abcdef"z (const byte*) DIGITS[] = (byte*) "0123456789abcdef"z
(const nomodify byte) IRQ_RASTER = (byte) 1 (const nomodify byte) IRQ_RASTER = (byte) 1
(const nomodify void()**) KERNEL_IRQ = (void()**) 788 (const nomodify void()**) KERNEL_IRQ = (void()**) 788
(const nomodify byte*) LINE_BUFFER = (byte*) 16384 (const nomodify byte*) LINE_BUFFER = (byte*) 8192
(byte) MOS6526_CIA::INTERRUPT (byte) MOS6526_CIA::INTERRUPT
(byte) MOS6526_CIA::PORT_A (byte) MOS6526_CIA::PORT_A
(byte) MOS6526_CIA::PORT_A_DDR (byte) MOS6526_CIA::PORT_A_DDR
@ -136,32 +136,32 @@
(const nomodify struct MOS6569_VICII*) VICII = (struct MOS6569_VICII*) 53248 (const nomodify struct MOS6569_VICII*) VICII = (struct MOS6569_VICII*) 53248
(const nomodify byte) WHITE = (byte) 1 (const nomodify byte) WHITE = (byte) 1
(byte()) abs_u8((byte) abs_u8::u) (byte()) abs_u8((byte) abs_u8::u)
(byte~) abs_u8::$0 reg byte a 20002.0 (byte~) abs_u8::$0 reg byte x 20002.0
(label) abs_u8::@1 (label) abs_u8::@1
(label) abs_u8::@return (label) abs_u8::@return
(byte) abs_u8::return (byte) abs_u8::return
(byte) abs_u8::return#0 reg byte a 2002.0 (byte) abs_u8::return#0 reg byte a 2002.0
(byte) abs_u8::return#1 reg byte a 2002.0 (byte) abs_u8::return#1 reg byte a 2002.0
(byte) abs_u8::return#2 reg byte y 20002.0 (byte) abs_u8::return#2 reg byte a 20002.0
(byte) abs_u8::return#4 reg byte y 5501.0 (byte) abs_u8::return#4 reg byte a 5501.0
(byte) abs_u8::u (byte) abs_u8::u
(byte) abs_u8::u#0 reg byte y 2002.0 (byte) abs_u8::u#0 reg byte a 2002.0
(byte) abs_u8::u#1 reg byte y 2002.0 (byte) abs_u8::u#1 reg byte a 2002.0
(byte) abs_u8::u#2 reg byte y 10668.333333333332 (byte) abs_u8::u#2 reg byte a 10668.333333333332
(volatile byte) canvas_show_flag loadstore zp[1]:34 15.150684931506847 (volatile byte) canvas_show_flag loadstore zp[1]:27 15.577464788732396
(volatile byte) canvas_show_memory loadstore zp[1]:33 2.452380952380952 (volatile byte) canvas_show_memory loadstore zp[1]:26 2.452380952380952
(dword()) clock() (dword()) clock()
(label) clock::@return (label) clock::@return
(dword) clock::return (dword) clock::return
(dword) clock::return#0 return zp[4]:13 367.33333333333337 (dword) clock::return#0 return zp[4]:11 367.33333333333337
(dword) clock::return#2 return zp[4]:13 202.0 (dword) clock::return#2 return zp[4]:11 202.0
(void()) clock_start() (void()) clock_start()
(label) clock_start::@return (label) clock_start::@return
(byte*) conio_cursor_color loadstore zp[2]:30 2.027272819090909E8 (byte*) conio_cursor_color loadstore zp[2]:23 2.027272819090909E8
(byte*) conio_cursor_text loadstore zp[2]:28 2.0090091E8 (byte*) conio_cursor_text loadstore zp[2]:21 2.0090091E8
(byte) conio_cursor_x loadstore zp[1]:26 2.5263168515789475E7 (byte) conio_cursor_x loadstore zp[1]:19 2.5263168515789475E7
(byte) conio_cursor_y loadstore zp[1]:27 2.824561492105263E8 (byte) conio_cursor_y loadstore zp[1]:20 2.824561492105263E8
(byte) conio_textcolor loadstore zp[1]:32 6.312500065625E7 (byte) conio_textcolor loadstore zp[1]:25 6.312500065625E7
(void()) cputc((byte) cputc::c) (void()) cputc((byte) cputc::c)
(label) cputc::@1 (label) cputc::@1
(label) cputc::@2 (label) cputc::@2
@ -173,11 +173,11 @@
(byte) cputc::c#2 reg byte a 20002.0 (byte) cputc::c#2 reg byte a 20002.0
(byte) cputc::c#3 reg byte a 1.100050025E8 (byte) cputc::c#3 reg byte a 1.100050025E8
(void()) cputln() (void()) cputln()
(byte*~) cputln::$1 zp[2]:28 2.000000002E9 (byte*~) cputln::$1 zp[2]:21 2.000000002E9
(byte*~) cputln::$2 zp[2]:30 2.000000002E9 (byte*~) cputln::$2 zp[2]:23 2.000000002E9
(label) cputln::@return (label) cputln::@return
(word) cputln::ln_offset (word) cputln::ln_offset
(word) cputln::ln_offset#0 ln_offset zp[2]:47 1.000000001E9 (word) cputln::ln_offset#0 ln_offset zp[2]:40 1.000000001E9
(void()) cputs((to_nomodify byte*) cputs::s) (void()) cputs((to_nomodify byte*) cputs::s)
(label) cputs::@1 (label) cputs::@1
(label) cputs::@2 (label) cputs::@2
@ -185,12 +185,12 @@
(byte) cputs::c (byte) cputs::c
(byte) cputs::c#1 reg byte a 1.0000001E7 (byte) cputs::c#1 reg byte a 1.0000001E7
(to_nomodify byte*) cputs::s (to_nomodify byte*) cputs::s
(to_nomodify byte*) cputs::s#0 s zp[2]:11 5000000.5 (to_nomodify byte*) cputs::s#0 s zp[2]:46 5000000.5
(to_nomodify byte*) cputs::s#4 s zp[2]:11 1.5050002E7 (to_nomodify byte*) cputs::s#4 s zp[2]:46 1.5050002E7
(to_nomodify byte*) cputs::s#5 s zp[2]:11 100001.0 (to_nomodify byte*) cputs::s#5 s zp[2]:46 100001.0
(void()) cscroll() (void()) cscroll()
(byte*~) cscroll::$7 zp[2]:28 2.0000000002E10 (byte*~) cscroll::$7 zp[2]:21 2.0000000002E10
(byte*~) cscroll::$8 zp[2]:30 2.0000000002E10 (byte*~) cscroll::$8 zp[2]:23 2.0000000002E10
(label) cscroll::@1 (label) cscroll::@1
(label) cscroll::@2 (label) cscroll::@2
(label) cscroll::@3 (label) cscroll::@3
@ -205,18 +205,18 @@
(label) eorfill::@5 (label) eorfill::@5
(label) eorfill::@return (label) eorfill::@return
(byte*) eorfill::canvas (byte*) eorfill::canvas
(byte*) eorfill::canvas#0 canvas zp[2]:30 551.0 (byte*) eorfill::canvas#0 canvas zp[2]:23 551.0
(byte) eorfill::eor (byte) eorfill::eor
(byte) eorfill::eor#0 reg byte a 200002.0 (byte) eorfill::eor#0 reg byte a 200002.0
(byte) eorfill::eor#1 reg byte a 1000001.0 (byte) eorfill::eor#1 reg byte a 1000001.0
(byte) eorfill::eor#2 reg byte a 1050001.5 (byte) eorfill::eor#2 reg byte a 1050001.5
(byte*) eorfill::fill_column (byte*) eorfill::fill_column
(byte*) eorfill::fill_column#1 fill_column zp[2]:30 100001.0 (byte*) eorfill::fill_column#1 fill_column zp[2]:23 100001.0
(byte*) eorfill::fill_column#5 fill_column zp[2]:30 133444.88888888888 (byte*) eorfill::fill_column#5 fill_column zp[2]:23 133444.88888888888
(byte*) eorfill::line_buffer (byte*) eorfill::line_buffer
(byte*) eorfill::line_column (byte*) eorfill::line_column
(byte*) eorfill::line_column#1 line_column zp[2]:28 66667.33333333333 (byte*) eorfill::line_column#1 line_column zp[2]:21 66667.33333333333
(byte*) eorfill::line_column#2 line_column zp[2]:28 162500.5 (byte*) eorfill::line_column#2 line_column zp[2]:21 162500.5
(byte) eorfill::x (byte) eorfill::x
(byte) eorfill::x#1 reg byte x 200002.0 (byte) eorfill::x#1 reg byte x 200002.0
(byte) eorfill::x#2 reg byte x 30000.300000000003 (byte) eorfill::x#2 reg byte x 30000.300000000003
@ -259,7 +259,6 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(label) line::@13 (label) line::@13
(label) line::@14 (label) line::@14
(label) line::@15 (label) line::@15
(label) line::@16
(label) line::@2 (label) line::@2
(label) line::@3 (label) line::@3
(label) line::@4 (label) line::@4
@ -271,63 +270,95 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(label) line::@return (label) line::@return
(byte*) line::canvas (byte*) line::canvas
(byte) line::dx (byte) line::dx
(byte) line::dx#0 dx zp[1]:43 6733.466666666667 (byte) line::dx#0 dx zp[1]:36 5941.294117647059
(byte) line::dy (byte) line::dy
(byte) line::dy#0 dy zp[1]:44 7390.390243902439 (byte) line::dy#0 dy zp[1]:37 6446.936170212766
(byte) line::e (byte) line::e
(byte) line::e#0 e zp[1]:23 500.5 (byte) line::e#0 reg byte x 333.6666666666667
(byte) line::e#1 e zp[1]:23 133334.66666666666 (byte) line::e#1 reg byte x 133334.66666666666
(byte) line::e#2 e zp[1]:23 50000.5 (byte) line::e#2 reg byte x 33333.666666666664
(byte) line::e#3 e zp[1]:23 100501.5 (byte) line::e#3 reg byte x 100501.5
(byte) line::e#6 e zp[1]:23 150001.5 (byte) line::e#5 reg byte x 150001.5
(byte) line::e1 (byte) line::e1
(byte) line::e1#0 e1 zp[1]:25 2002.0 (byte) line::e1#0 reg byte x 2002.0
(byte) line::e1#1 e1 zp[1]:25 133334.66666666666 (byte) line::e1#1 reg byte x 133334.66666666666
(byte) line::e1#2 e1 zp[1]:25 200002.0 (byte) line::e1#2 reg byte x 200002.0
(byte) line::e1#3 e1 zp[1]:25 40200.600000000006 (byte) line::e1#3 reg byte x 28714.714285714286
(byte) line::e1#6 e1 zp[1]:25 150001.5 (byte) line::e1#7 reg byte x 150001.5
(label) line::plot1
(byte~) line::plot1_$0 reg byte a 2002.0
(byte~) line::plot1_$1 zp[1]:42 2002.0
(byte~) line::plot1_$2 reg byte a 2002.0
(byte*) line::plot1_column
(byte*) line::plot1_column#0 plot1_column zp[2]:40 1501.5
(byte) line::plot1_x
(byte) line::plot1_y
(label) line::plot2
(byte~) line::plot2_$0 reg byte a 200002.0
(byte~) line::plot2_$1 zp[1]:45 200002.0
(byte~) line::plot2_$2 reg byte a 200002.0
(byte*) line::plot2_column
(byte*) line::plot2_column#0 plot2_column zp[2]:43 150001.5
(byte) line::plot2_x
(byte) line::plot2_x#0 plot2_x zp[1]:17 57143.42857142857
(byte) line::plot2_y
(label) line::plot3
(byte~) line::plot3_$0 reg byte a 200002.0
(byte~) line::plot3_$1 zp[1]:48 200002.0
(byte~) line::plot3_$2 reg byte a 200002.0
(byte*) line::plot3_column
(byte*) line::plot3_column#0 plot3_column zp[2]:46 150001.5
(byte) line::plot3_x
(byte) line::plot3_y
(label) line::plot4
(byte~) line::plot4_$0 reg byte a 2002.0
(byte~) line::plot4_$1 reg byte a 2002.0
(byte~) line::plot4_$2 reg byte a 2002.0
(byte*) line::plot4_column
(byte*) line::plot4_column#0 plot4_column zp[2]:49 1501.5
(byte) line::plot4_x
(byte) line::plot4_y
(byte) line::sx (byte) line::sx
(byte) line::sx#0 sx zp[1]:45 5459.567567567567 (byte) line::sx#0 sx zp[1]:38 4697.767441860465
(byte) line::sy (byte) line::sy
(byte) line::sy#0 sy zp[1]:46 6091.0 (byte) line::sy#0 sy zp[1]:39 5153.923076923076
(byte) line::x (byte) line::x
(byte) line::x#0 x zp[1]:24 196.5925925925926 (byte) line::x#0 x zp[1]:17 217.55172413793105
(byte) line::x#1 x zp[1]:24 60000.600000000006 (byte) line::x#10 x zp[1]:17 75251.0
(byte) line::x#10 x zp[1]:24 75251.0 (byte) line::x#12 x zp[1]:17 66834.16666666666
(byte) line::x#12 x zp[1]:24 43000.57142857143 (byte) line::x#13 x zp[1]:17 30200.5
(byte) line::x#16 x zp[1]:24 150001.5 (byte) line::x#16 x zp[1]:17 150001.5
(byte) line::x#5 x zp[1]:24 75251.0
(byte) line::x1 (byte) line::x1
(byte) line::x1#0 x1 zp[1]:24 50.5 (byte) line::x1#0 x1 zp[1]:17 50.5
(byte) line::x1#1 x1 zp[1]:24 50.5 (byte) line::x1#1 x1 zp[1]:17 50.5
(byte) line::x1#2 x1 zp[1]:24 50.5 (byte) line::x1#2 x1 zp[1]:17 50.5
(byte) line::x2 (byte) line::x2
(byte) line::x2#0 x2 zp[1]:21 101.0 (byte) line::x2#0 x2 zp[1]:15 101.0
(byte) line::x2#1 x2 zp[1]:21 101.0 (byte) line::x2#1 x2 zp[1]:15 101.0
(byte) line::x2#10 x2 zp[1]:21 3009.0 (byte) line::x2#11 x2 zp[1]:15 2841.8333333333335
(byte) line::x2#2 x2 zp[1]:21 101.0 (byte) line::x2#2 x2 zp[1]:15 101.0
(byte) line::y (byte) line::y
(byte) line::y#0 reg byte x 239.27777777777777 (byte) line::y#0 y zp[1]:18 239.27777777777777
(byte) line::y#1 reg byte x 1001.0 (byte) line::y#1 y zp[1]:18 1001.0
(byte) line::y#10 reg byte x 57286.42857142857 (byte) line::y#10 y zp[1]:18 55667.33333333333
(byte) line::y#11 reg byte x 100334.66666666667 (byte) line::y#11 y zp[1]:18 50334.16666666667
(byte) line::y#13 reg byte x 715.0 (byte) line::y#13 y zp[1]:18 667.3333333333333
(byte) line::y#15 reg byte x 40000.4 (byte) line::y#15 y zp[1]:18 41667.08333333333
(byte) line::y#3 reg byte x 100001.0 (byte) line::y#3 y zp[1]:18 100001.0
(byte) line::y#6 reg byte x 201003.0 (byte) line::y#6 y zp[1]:18 201003.0
(byte) line::y1 (byte) line::y1
(byte) line::y1#0 reg byte x 67.33333333333333 (byte) line::y1#0 y1 zp[1]:18 67.33333333333333
(byte) line::y1#1 reg byte x 67.33333333333333 (byte) line::y1#1 y1 zp[1]:18 67.33333333333333
(byte) line::y1#2 reg byte x 67.33333333333333 (byte) line::y1#2 y1 zp[1]:18 67.33333333333333
(byte) line::y2 (byte) line::y2
(byte) line::y2#0 y2 zp[1]:22 202.0 (byte) line::y2#0 y2 zp[1]:16 202.0
(byte) line::y2#1 y2 zp[1]:22 202.0 (byte) line::y2#1 y2 zp[1]:16 202.0
(byte) line::y2#10 y2 zp[1]:22 226.68421052631578 (byte) line::y2#10 y2 zp[1]:16 226.68421052631578
(byte) line::y2#13 y2 zp[1]:22 6000.176470588235 (byte) line::y2#13 y2 zp[1]:16 4857.285714285714
(byte) line::y2#2 y2 zp[1]:22 202.0 (byte) line::y2#2 y2 zp[1]:16 202.0
(byte) line::y2#3 y2 zp[1]:22 2002.0 (byte) line::y2#3 y2 zp[1]:16 2002.0
(void()) main() (void()) main()
(dword~) main::$18 zp[4]:13 202.0 (dword~) main::$18 zp[4]:11 202.0
(label) main::@1 (label) main::@1
(label) main::@10 (label) main::@10
(label) main::@11 (label) main::@11
@ -359,14 +390,14 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(byte) main::c#2 reg byte x 776.0 (byte) main::c#2 reg byte x 776.0
(byte) main::c#4 reg byte x 202.0 (byte) main::c#4 reg byte x 202.0
(byte*) main::canvas (byte*) main::canvas
(word) main::canvas#1 canvas zp[2]:9 6.733333333333333 (word) main::canvas#1 canvas zp[2]:9 5.611111111111111
(byte*) main::canvas#10 canvas zp[2]:9 8.18918918918919 (byte*) main::canvas#10 canvas zp[2]:9 8.911764705882353
(byte*) main::canvas#24 canvas zp[2]:9 202.0 (byte*) main::canvas#24 canvas zp[2]:9 202.0
(byte*) main::cols (byte*) main::cols
(byte*) main::cols#1 cols zp[2]:2 67.33333333333333 (byte*) main::cols#1 cols zp[2]:2 67.33333333333333
(byte*) main::cols#5 cols zp[2]:2 133.66666666666669 (byte*) main::cols#5 cols zp[2]:2 133.66666666666669
(dword) main::cyclecount (dword) main::cyclecount
(dword) main::cyclecount#0 cyclecount zp[4]:13 25.25 (dword) main::cyclecount#0 cyclecount zp[4]:11 25.25
(byte) main::p0_idx (byte) main::p0_idx
(byte) main::p0_idx#1 p0_idx zp[1]:6 11.222222222222223 (byte) main::p0_idx#1 p0_idx zp[1]:6 11.222222222222223
(byte) main::p0_idx#11 p0_idx zp[1]:6 15.538461538461538 (byte) main::p0_idx#11 p0_idx zp[1]:6 15.538461538461538
@ -395,40 +426,40 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(byte) main::x#1 reg byte y 2002.0 (byte) main::x#1 reg byte y 2002.0
(byte) main::x#2 reg byte y 1001.0 (byte) main::x#2 reg byte y 1001.0
(byte) main::x0 (byte) main::x0
(byte) main::x0#0 x0 zp[1]:35 16.833333333333332 (byte) main::x0#0 x0 zp[1]:28 16.833333333333332
(byte) main::x1 (byte) main::x1
(byte) main::x1#0 x1 zp[1]:21 33.666666666666664 (byte) main::x1#0 x1 zp[1]:15 33.666666666666664
(byte) main::x2 (byte) main::x2
(byte) main::x2#0 x2 zp[1]:21 43.285714285714285 (byte) main::x2#0 x2 zp[1]:15 43.285714285714285
(byte) main::y (byte) main::y
(byte) main::y#1 y zp[1]:26 202.0 (byte) main::y#1 y zp[1]:19 202.0
(byte) main::y#2 y zp[1]:26 36.72727272727273 (byte) main::y#2 y zp[1]:19 36.72727272727273
(byte) main::y0 (byte) main::y0
(byte) main::y0#0 y0 zp[1]:36 16.833333333333332 (byte) main::y0#0 y0 zp[1]:29 16.833333333333332
(byte) main::y1 (byte) main::y1
(byte) main::y1#0 y1 zp[1]:37 33.666666666666664 (byte) main::y1#0 y1 zp[1]:30 33.666666666666664
(byte) main::y2 (byte) main::y2
(byte) main::y2#0 y2 zp[1]:38 43.285714285714285 (byte) main::y2#0 y2 zp[1]:31 43.285714285714285
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num) (void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
(label) memcpy::@1 (label) memcpy::@1
(label) memcpy::@2 (label) memcpy::@2
(label) memcpy::@return (label) memcpy::@return
(void*) memcpy::destination (void*) memcpy::destination
(void*) memcpy::destination#2 destination zp[2]:19 (void*) memcpy::destination#2 destination zp[2]:49
(byte*) memcpy::dst (byte*) memcpy::dst
(byte*) memcpy::dst#1 dst zp[2]:19 1.00000000000001E14 (byte*) memcpy::dst#1 dst zp[2]:49 1.00000000000001E14
(byte*) memcpy::dst#2 dst zp[2]:19 1.0003333333333467E14 (byte*) memcpy::dst#2 dst zp[2]:49 1.0003333333333467E14
(byte*) memcpy::dst#4 dst zp[2]:19 2.00000000002E11 (byte*) memcpy::dst#4 dst zp[2]:49 2.00000000002E11
(word) memcpy::num (word) memcpy::num
(void*) memcpy::return (void*) memcpy::return
(void*) memcpy::source (void*) memcpy::source
(void*) memcpy::source#2 source zp[2]:17 (void*) memcpy::source#2 source zp[2]:40
(byte*) memcpy::src (byte*) memcpy::src
(byte*) memcpy::src#1 src zp[2]:17 2.00000000000002E14 (byte*) memcpy::src#1 src zp[2]:40 2.00000000000002E14
(byte*) memcpy::src#2 src zp[2]:17 1.0002500000000125E14 (byte*) memcpy::src#2 src zp[2]:40 1.0002500000000125E14
(byte*) memcpy::src#4 src zp[2]:17 1.00000000001E11 (byte*) memcpy::src#4 src zp[2]:40 1.00000000001E11
(byte*) memcpy::src_end (byte*) memcpy::src_end
(byte*) memcpy::src_end#0 src_end zp[2]:47 1.251250000000025E13 (byte*) memcpy::src_end#0 src_end zp[2]:43 1.251250000000025E13
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1 (label) memset::@1
(label) memset::@2 (label) memset::@2
@ -438,38 +469,18 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(byte) memset::c#1 reg byte x 2.0000000002E10 (byte) memset::c#1 reg byte x 2.0000000002E10
(byte) memset::c#8 reg byte x 1.25125000000025E12 (byte) memset::c#8 reg byte x 1.25125000000025E12
(byte*) memset::dst (byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:19 2.0000000000002E13 (byte*) memset::dst#1 dst zp[2]:49 2.0000000000002E13
(byte*) memset::dst#2 dst zp[2]:19 1.3366666666668332E13 (byte*) memset::dst#2 dst zp[2]:49 1.3366666666668332E13
(byte*) memset::dst#4 dst zp[2]:19 2.00000000002E11 (byte*) memset::dst#4 dst zp[2]:49 2.00000000002E11
(byte*) memset::end (byte*) memset::end
(byte*) memset::end#0 end zp[2]:17 1.6833333333336665E12 (byte*) memset::end#0 end zp[2]:40 1.6833333333336665E12
(word) memset::num (word) memset::num
(word) memset::num#6 num zp[2]:17 1.00000000001E11 (word) memset::num#6 num zp[2]:40 1.00000000001E11
(void*) memset::return (void*) memset::return
(void*) memset::str (void*) memset::str
(void*) memset::str#7 str zp[2]:19 (void*) memset::str#7 str zp[2]:49
(void()) plot((byte*) plot::canvas , (byte) plot::x , (byte) plot::y)
(byte~) plot::$0 reg byte a 2000002.0
(byte~) plot::$2 zp[1]:49 2000002.0
(byte~) plot::$3 reg byte a 2000002.0
(label) plot::@return
(byte*) plot::canvas
(byte*) plot::column
(byte*) plot::column#0 column zp[2]:47 1500001.5
(byte) plot::x
(byte) plot::x#0 x zp[1]:24 1001.0
(byte) plot::x#1 x zp[1]:24 100001.0
(byte) plot::x#2 x zp[1]:24 100001.0
(byte) plot::x#3 x zp[1]:24 1001.0
(byte) plot::x#4 x zp[1]:24 550501.5
(byte) plot::y
(byte) plot::y#0 reg byte x 2002.0
(byte) plot::y#1 reg byte x 200002.0
(byte) plot::y#2 reg byte x 200002.0
(byte) plot::y#3 reg byte x 2002.0
(byte) plot::y#4 reg byte x 440401.2
(const byte*) plot_bit[(number) 8] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 } (const byte*) plot_bit[(number) 8] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(const word*) plot_column[(number) $10] = { (word) 0, (word)(number) 1*(number) $80, (word)(number) 2*(number) $80, (word)(number) 3*(number) $80, (word)(number) 4*(number) $80, (word)(number) 5*(number) $80, (word)(number) 6*(number) $80, (word)(number) 7*(number) $80, (word)(number) 8*(number) $80, (word)(number) 9*(number) $80, (word)(number) $a*(number) $80, (word)(number) $b*(number) $80, (word)(number) $c*(number) $80, (word)(number) $d*(number) $80, (word)(number) $e*(number) $80, (word)(number) $f*(number) $80 } (const byte**) plot_column[(number) $10] = { (const nomodify byte*) LINE_BUFFER, (const nomodify byte*) LINE_BUFFER+(byte)(number) 1*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) 2*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) 3*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) 4*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) 5*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) 6*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) 7*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) 8*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) 9*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) $a*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) $b*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) $c*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) $d*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) $e*(number) $80, (const nomodify byte*) LINE_BUFFER+(word)(number) $f*(number) $80 }
(struct printf_buffer_number) printf_buffer loadstore mem[12] = {} (struct printf_buffer_number) printf_buffer loadstore mem[12] = {}
(const byte*) printf_buffer_number::digits[(number) $b] = { fill( $b, 0) } (const byte*) printf_buffer_number::digits[(number) $b] = { fill( $b, 0) }
(byte) printf_buffer_number::sign (byte) printf_buffer_number::sign
@ -482,7 +493,7 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(byte) printf_format_string::justify_left (byte) printf_format_string::justify_left
(byte) printf_format_string::min_length (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) (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]:19 10001.0 (word~) printf_number_buffer::$19 zp[2]:49 10001.0
(label) printf_number_buffer::@1 (label) printf_number_buffer::@1
(label) printf_number_buffer::@10 (label) printf_number_buffer::@10
(label) printf_number_buffer::@11 (label) printf_number_buffer::@11
@ -508,42 +519,42 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(struct printf_buffer_number) printf_number_buffer::buffer (struct printf_buffer_number) printf_number_buffer::buffer
(byte*) printf_number_buffer::buffer_digits (byte*) printf_number_buffer::buffer_digits
(byte) printf_number_buffer::buffer_sign (byte) printf_number_buffer::buffer_sign
(byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:37 2002.0 (byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:31 2002.0
(byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:37 2002.0 (byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:31 2002.0
(byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:37 1600.25 (byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:31 1600.25
(struct printf_format_number) printf_number_buffer::format (struct printf_format_number) printf_number_buffer::format
(byte) printf_number_buffer::format_justify_left (byte) printf_number_buffer::format_justify_left
(byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:35 645.2258064516129 (byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:29 645.2258064516129
(byte) printf_number_buffer::format_min_length (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_min_length#2 reg byte x 1000.1
(byte) printf_number_buffer::format_radix (byte) printf_number_buffer::format_radix
(byte) printf_number_buffer::format_sign_always (byte) printf_number_buffer::format_sign_always
(byte) printf_number_buffer::format_upper_case (byte) printf_number_buffer::format_upper_case
(byte) printf_number_buffer::format_upper_case#10 format_upper_case zp[1]:21 384.65384615384613 (byte) printf_number_buffer::format_upper_case#10 format_upper_case zp[1]:15 384.65384615384613
(byte) printf_number_buffer::format_zero_padding (byte) printf_number_buffer::format_zero_padding
(byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:36 937.59375 (byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:30 937.59375
(signed byte) printf_number_buffer::len (signed byte) printf_number_buffer::len
(signed byte) printf_number_buffer::len#0 reg byte y 15001.5 (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#1 reg byte y 20002.0
(signed byte) printf_number_buffer::len#2 reg byte y 30003.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
(signed byte) printf_number_buffer::padding#1 padding zp[1]:22 10001.0 (signed byte) printf_number_buffer::padding#1 padding zp[1]:16 10001.0
(signed byte) printf_number_buffer::padding#10 padding zp[1]:22 1904.952380952381 (signed byte) printf_number_buffer::padding#10 padding zp[1]:16 1904.952380952381
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length) (void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
(label) printf_padding::@1 (label) printf_padding::@1
(label) printf_padding::@2 (label) printf_padding::@2
(label) printf_padding::@3 (label) printf_padding::@3
(label) printf_padding::@return (label) printf_padding::@return
(byte) printf_padding::i (byte) printf_padding::i
(byte) printf_padding::i#1 i zp[1]:25 2.0000002E7 (byte) printf_padding::i#1 i zp[1]:28 2.0000002E7
(byte) printf_padding::i#2 i zp[1]:25 7500000.75 (byte) printf_padding::i#2 i zp[1]:28 7500000.75
(byte) printf_padding::length (byte) printf_padding::length
(byte) printf_padding::length#0 length zp[1]:23 20002.0 (byte) printf_padding::length#0 length zp[1]:17 20002.0
(byte) printf_padding::length#1 length zp[1]:23 20002.0 (byte) printf_padding::length#1 length zp[1]:17 20002.0
(byte) printf_padding::length#2 length zp[1]:23 20002.0 (byte) printf_padding::length#2 length zp[1]:17 20002.0
(byte) printf_padding::length#4 length zp[1]:23 1671667.3333333333 (byte) printf_padding::length#4 length zp[1]:17 1671667.3333333333
(byte) printf_padding::pad (byte) printf_padding::pad
(byte) printf_padding::pad#5 pad zp[1]:24 1666666.8333333333 (byte) printf_padding::pad#5 pad zp[1]:18 1666666.8333333333
(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) (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)
(label) printf_uchar::@1 (label) printf_uchar::@1
(label) printf_uchar::@2 (label) printf_uchar::@2
@ -577,7 +588,7 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(byte) printf_ulong::format_zero_padding (byte) printf_ulong::format_zero_padding
(const byte) printf_ulong::format_zero_padding#0 format_zero_padding = (byte) 0 (const byte) printf_ulong::format_zero_padding#0 format_zero_padding = (byte) 0
(dword) printf_ulong::uvalue (dword) printf_ulong::uvalue
(dword) printf_ulong::uvalue#0 uvalue zp[4]:13 367.33333333333337 (dword) printf_ulong::uvalue#0 uvalue zp[4]:11 367.33333333333337
(void()) setup_irq() (void()) setup_irq()
(label) setup_irq::@return (label) setup_irq::@return
(byte()) sgn_u8((byte) sgn_u8::u) (byte()) sgn_u8((byte) sgn_u8::u)
@ -597,13 +608,13 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(label) strlen::@2 (label) strlen::@2
(label) strlen::@return (label) strlen::@return
(word) strlen::len (word) strlen::len
(word) strlen::len#1 len zp[2]:19 1.0000001E7 (word) strlen::len#1 len zp[2]:49 1.0000001E7
(word) strlen::len#2 len zp[2]:19 5002500.75 (word) strlen::len#2 len zp[2]:49 5002500.75
(word) strlen::return (word) strlen::return
(word) strlen::return#2 return zp[2]:19 20002.0 (word) strlen::return#2 return zp[2]:49 20002.0
(byte*) strlen::str (byte*) strlen::str
(byte*) strlen::str#0 str zp[2]:17 2.0000002E7 (byte*) strlen::str#0 str zp[2]:40 2.0000002E7
(byte*) strlen::str#2 str zp[2]:17 1.0000001E7 (byte*) strlen::str#2 str zp[2]:40 1.0000001E7
(byte*()) strupr((byte*) strupr::str) (byte*()) strupr((byte*) strupr::str)
(byte~) strupr::$0 reg byte a 2.0000002E7 (byte~) strupr::$0 reg byte a 2.0000002E7
(label) strupr::@1 (label) strupr::@1
@ -612,8 +623,8 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(label) strupr::@return (label) strupr::@return
(byte*) strupr::return (byte*) strupr::return
(byte*) strupr::src (byte*) strupr::src
(byte*) strupr::src#1 src zp[2]:11 2.0000002E7 (byte*) strupr::src#1 src zp[2]:46 2.0000002E7
(byte*) strupr::src#2 src zp[2]:11 7142857.857142856 (byte*) strupr::src#2 src zp[2]:46 7142857.857142856
(byte*) strupr::str (byte*) strupr::str
(const byte*) strupr::str#0 str = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (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) (byte()) textcolor((byte) textcolor::color)
@ -646,22 +657,22 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(label) uctoa::@7 (label) uctoa::@7
(label) uctoa::@return (label) uctoa::@return
(byte*) uctoa::buffer (byte*) uctoa::buffer
(byte*) uctoa::buffer#11 buffer zp[2]:19 335000.50000000006 (byte*) uctoa::buffer#11 buffer zp[2]:49 335000.50000000006
(byte*) uctoa::buffer#14 buffer zp[2]:19 1500001.5 (byte*) uctoa::buffer#14 buffer zp[2]:49 1500001.5
(byte*) uctoa::buffer#3 buffer zp[2]:19 20002.0 (byte*) uctoa::buffer#3 buffer zp[2]:49 20002.0
(byte*) uctoa::buffer#4 buffer zp[2]:19 2000002.0 (byte*) uctoa::buffer#4 buffer zp[2]:49 2000002.0
(byte) uctoa::digit (byte) uctoa::digit
(byte) uctoa::digit#1 digit zp[1]:36 2000002.0 (byte) uctoa::digit#1 digit zp[1]:30 2000002.0
(byte) uctoa::digit#2 digit zp[1]:36 307692.6153846154 (byte) uctoa::digit#2 digit zp[1]:30 307692.6153846154
(byte) uctoa::digit_value (byte) uctoa::digit_value
(byte) uctoa::digit_value#0 digit_value zp[1]:43 600000.6000000001 (byte) uctoa::digit_value#0 digit_value zp[1]:36 600000.6000000001
(byte*) uctoa::digit_values (byte*) uctoa::digit_values
(byte) uctoa::max_digits (byte) uctoa::max_digits
(const byte) uctoa::max_digits#2 max_digits = (byte) 2 (const byte) uctoa::max_digits#2 max_digits = (byte) 2
(byte) uctoa::radix (byte) uctoa::radix
(byte) uctoa::started (byte) uctoa::started
(byte) uctoa::started#2 started zp[1]:37 600000.6000000001 (byte) uctoa::started#2 started zp[1]:31 600000.6000000001
(byte) uctoa::started#4 started zp[1]:37 1000001.0 (byte) uctoa::started#4 started zp[1]:31 1000001.0
(byte) uctoa::value (byte) uctoa::value
(byte) uctoa::value#0 reg byte x 1000001.0 (byte) uctoa::value#0 reg byte x 1000001.0
(byte) uctoa::value#1 reg byte x 5501.0 (byte) uctoa::value#1 reg byte x 5501.0
@ -673,14 +684,14 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(label) uctoa_append::@3 (label) uctoa_append::@3
(label) uctoa_append::@return (label) uctoa_append::@return
(byte*) uctoa_append::buffer (byte*) uctoa_append::buffer
(byte*) uctoa_append::buffer#0 buffer zp[2]:19 1375000.25 (byte*) uctoa_append::buffer#0 buffer zp[2]:49 1375000.25
(byte) uctoa_append::digit (byte) uctoa_append::digit
(byte) uctoa_append::digit#1 reg byte y 1.0000000001E10 (byte) uctoa_append::digit#1 reg byte y 1.0000000001E10
(byte) uctoa_append::digit#2 reg byte y 1.00050000015E10 (byte) uctoa_append::digit#2 reg byte y 1.00050000015E10
(byte) uctoa_append::return (byte) uctoa_append::return
(byte) uctoa_append::return#0 reg byte x 2000002.0 (byte) uctoa_append::return#0 reg byte x 2000002.0
(byte) uctoa_append::sub (byte) uctoa_append::sub
(byte) uctoa_append::sub#0 sub zp[1]:43 3.3335000005E9 (byte) uctoa_append::sub#0 sub zp[1]:36 3.3335000005E9
(byte) uctoa_append::value (byte) uctoa_append::value
(byte) uctoa_append::value#0 reg byte x 3666667.333333333 (byte) uctoa_append::value#0 reg byte x 3666667.333333333
(byte) uctoa_append::value#1 reg byte x 2.0000000002E10 (byte) uctoa_append::value#1 reg byte x 2.0000000002E10
@ -697,15 +708,15 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(label) ultoa::@7 (label) ultoa::@7
(label) ultoa::@return (label) ultoa::@return
(byte*) ultoa::buffer (byte*) ultoa::buffer
(byte*) ultoa::buffer#11 buffer zp[2]:17 287143.2857142857 (byte*) ultoa::buffer#11 buffer zp[2]:40 287143.2857142857
(byte*) ultoa::buffer#14 buffer zp[2]:17 1500001.5 (byte*) ultoa::buffer#14 buffer zp[2]:40 1500001.5
(byte*) ultoa::buffer#3 buffer zp[2]:17 20002.0 (byte*) ultoa::buffer#3 buffer zp[2]:40 20002.0
(byte*) ultoa::buffer#4 buffer zp[2]:17 2000002.0 (byte*) ultoa::buffer#4 buffer zp[2]:40 2000002.0
(byte) ultoa::digit (byte) ultoa::digit
(byte) ultoa::digit#1 digit zp[1]:35 2000002.0 (byte) ultoa::digit#1 digit zp[1]:29 2000002.0
(byte) ultoa::digit#2 digit zp[1]:35 285714.5714285714 (byte) ultoa::digit#2 digit zp[1]:29 285714.5714285714
(dword) ultoa::digit_value (dword) ultoa::digit_value
(dword) ultoa::digit_value#0 digit_value zp[4]:39 600000.6000000001 (dword) ultoa::digit_value#0 digit_value zp[4]:32 600000.6000000001
(dword*) ultoa::digit_values (dword*) ultoa::digit_values
(byte) ultoa::max_digits (byte) ultoa::max_digits
(const byte) ultoa::max_digits#1 max_digits = (byte) $a (const byte) ultoa::max_digits#1 max_digits = (byte) $a
@ -714,28 +725,28 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
(byte) ultoa::started#2 reg byte x 500000.5 (byte) ultoa::started#2 reg byte x 500000.5
(byte) ultoa::started#4 reg byte x 1000001.0 (byte) ultoa::started#4 reg byte x 1000001.0
(dword) ultoa::value (dword) ultoa::value
(dword) ultoa::value#0 value zp[4]:13 1000001.0 (dword) ultoa::value#0 value zp[4]:11 1000001.0
(dword) ultoa::value#1 value zp[4]:13 5501.0 (dword) ultoa::value#1 value zp[4]:11 5501.0
(dword) ultoa::value#2 value zp[4]:13 572857.857142857 (dword) ultoa::value#2 value zp[4]:11 572857.857142857
(dword) ultoa::value#6 value zp[4]:13 1500001.5 (dword) ultoa::value#6 value zp[4]:11 1500001.5
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) (dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
(label) ultoa_append::@1 (label) ultoa_append::@1
(label) ultoa_append::@2 (label) ultoa_append::@2
(label) ultoa_append::@3 (label) ultoa_append::@3
(label) ultoa_append::@return (label) ultoa_append::@return
(byte*) ultoa_append::buffer (byte*) ultoa_append::buffer
(byte*) ultoa_append::buffer#0 buffer zp[2]:17 1375000.25 (byte*) ultoa_append::buffer#0 buffer zp[2]:40 1375000.25
(byte) ultoa_append::digit (byte) ultoa_append::digit
(byte) ultoa_append::digit#1 reg byte x 1.0000000001E10 (byte) ultoa_append::digit#1 reg byte x 1.0000000001E10
(byte) ultoa_append::digit#2 reg byte x 1.00050000015E10 (byte) ultoa_append::digit#2 reg byte x 1.00050000015E10
(dword) ultoa_append::return (dword) ultoa_append::return
(dword) ultoa_append::return#0 return zp[4]:13 2000002.0 (dword) ultoa_append::return#0 return zp[4]:11 2000002.0
(dword) ultoa_append::sub (dword) ultoa_append::sub
(dword) ultoa_append::sub#0 sub zp[4]:39 3.3335000005E9 (dword) ultoa_append::sub#0 sub zp[4]:32 3.3335000005E9
(dword) ultoa_append::value (dword) ultoa_append::value
(dword) ultoa_append::value#0 value zp[4]:13 3666667.333333333 (dword) ultoa_append::value#0 value zp[4]:11 3666667.333333333
(dword) ultoa_append::value#1 value zp[4]:13 2.0000000002E10 (dword) ultoa_append::value#1 value zp[4]:11 2.0000000002E10
(dword) ultoa_append::value#2 value zp[4]:13 5.001833334166666E9 (dword) ultoa_append::value#2 value zp[4]:11 5.001833334166666E9
zp[2]:2 [ main::cols#5 main::cols#1 ] zp[2]:2 [ main::cols#5 main::cols#1 ]
zp[2]:4 [ main::screen#5 main::screen#1 ] zp[2]:4 [ main::screen#5 main::screen#1 ]
@ -749,62 +760,70 @@ reg byte x [ printf_number_buffer::format_min_length#2 ]
reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
reg byte a [ cputc::c#3 cputc::c#0 cputc::c#2 cputc::c#1 ] reg byte a [ cputc::c#3 cputc::c#0 cputc::c#2 cputc::c#1 ]
reg byte x [ memset::c#8 memset::c#1 ] reg byte x [ memset::c#8 memset::c#1 ]
zp[2]:11 [ strupr::src#2 strupr::src#1 cputs::s#4 cputs::s#5 cputs::s#0 ]
reg byte a [ toupper::return#2 toupper::return#0 toupper::ch#0 ] reg byte a [ toupper::return#2 toupper::return#0 toupper::ch#0 ]
zp[4]:13 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 printf_ulong::uvalue#0 ultoa_append::return#0 main::cyclecount#0 clock::return#2 main::$18 clock::return#0 ] zp[4]:11 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 printf_ulong::uvalue#0 ultoa_append::return#0 main::cyclecount#0 clock::return#2 main::$18 clock::return#0 ]
reg byte x [ ultoa::started#2 ultoa::started#4 ] reg byte x [ ultoa::started#2 ultoa::started#4 ]
zp[2]:17 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 strlen::str#2 strlen::str#0 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 memset::num#6 memset::end#0 ]
reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ] reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ]
reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
zp[2]:19 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 memset::str#7 memset::dst#2 memset::dst#4 memset::dst#1 ]
reg byte x [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#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 ] reg byte y [ uctoa_append::digit#2 uctoa_append::digit#1 ]
reg byte x [ eorfill::x#2 eorfill::x#1 ] reg byte x [ eorfill::x#2 eorfill::x#1 ]
reg byte y [ eorfill::y#2 eorfill::y#1 ] reg byte y [ eorfill::y#2 eorfill::y#1 ]
reg byte a [ eorfill::eor#2 eorfill::eor#0 eorfill::eor#1 ] reg byte a [ eorfill::eor#2 eorfill::eor#0 eorfill::eor#1 ]
zp[1]:21 [ line::x2#10 line::x2#0 line::x2#1 line::x2#2 main::x1#0 main::x2#0 printf_number_buffer::format_upper_case#10 ] zp[1]:15 [ line::x2#11 line::x2#0 line::x2#1 line::x2#2 main::x1#0 main::x2#0 printf_number_buffer::format_upper_case#10 ]
zp[1]:22 [ line::y2#13 line::y2#10 line::y2#0 line::y2#1 line::y2#2 line::y2#3 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[1]:16 [ line::y2#13 line::y2#10 line::y2#0 line::y2#1 line::y2#2 line::y2#3 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
zp[1]:23 [ line::e#3 line::e#0 line::e#6 line::e#2 line::e#1 printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] reg byte x [ line::e#3 line::e#5 line::e#0 line::e#1 line::e#2 ]
zp[1]:24 [ line::x#5 line::x#10 line::x#0 line::x1#0 line::x1#1 line::x1#2 line::x#16 line::x#1 line::x#12 plot::x#4 plot::x#3 plot::x#0 plot::x#1 plot::x#2 printf_padding::pad#5 ] zp[1]:17 [ line::x#12 line::x#10 line::x#16 line::x#0 line::x1#0 line::x1#1 line::x1#2 line::plot2_x#0 line::x#13 printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
reg byte x [ line::y#10 line::y#6 line::y#13 line::y#0 line::y1#0 line::y1#1 line::y1#2 line::y#1 line::y#15 line::y#11 line::y#3 ] zp[1]:18 [ line::y#10 line::y#6 line::y#15 line::y#13 line::y#0 line::y1#0 line::y1#1 line::y1#2 line::y#1 line::y#11 line::y#3 printf_padding::pad#5 ]
zp[1]:25 [ line::e1#3 line::e1#0 line::e1#6 line::e1#2 line::e1#1 printf_padding::i#2 printf_padding::i#1 ] reg byte x [ line::e1#3 line::e1#0 line::e1#7 line::e1#2 line::e1#1 ]
reg byte x [ plot::y#4 plot::y#3 plot::y#0 plot::y#1 plot::y#2 ]
reg byte a [ sgn_u8::u#2 sgn_u8::u#0 sgn_u8::u#1 ] reg byte a [ sgn_u8::u#2 sgn_u8::u#0 sgn_u8::u#1 ]
reg byte a [ sgn_u8::return#4 ] reg byte a [ sgn_u8::return#4 ]
reg byte y [ abs_u8::return#4 abs_u8::return#2 abs_u8::u#2 abs_u8::u#0 abs_u8::u#1 ] reg byte a [ abs_u8::return#4 abs_u8::return#2 abs_u8::u#2 abs_u8::u#0 abs_u8::u#1 ]
zp[1]:26 [ conio_cursor_x main::y#2 main::y#1 ] zp[1]:19 [ conio_cursor_x main::y#2 main::y#1 ]
zp[1]:27 [ conio_cursor_y ] zp[1]:20 [ conio_cursor_y ]
zp[2]:28 [ conio_cursor_text cputln::$1 cscroll::$7 eorfill::line_column#2 eorfill::line_column#1 ] zp[2]:21 [ conio_cursor_text cputln::$1 cscroll::$7 eorfill::line_column#2 eorfill::line_column#1 ]
zp[2]:30 [ conio_cursor_color cputln::$2 cscroll::$8 eorfill::fill_column#5 eorfill::canvas#0 eorfill::fill_column#1 ] zp[2]:23 [ conio_cursor_color cputln::$2 cscroll::$8 eorfill::fill_column#5 eorfill::canvas#0 eorfill::fill_column#1 ]
zp[1]:32 [ conio_textcolor ] zp[1]:25 [ conio_textcolor ]
zp[1]:33 [ canvas_show_memory ] zp[1]:26 [ canvas_show_memory ]
zp[1]:34 [ canvas_show_flag ] zp[1]:27 [ canvas_show_flag ]
zp[1]:35 [ main::x0#0 ultoa::digit#2 ultoa::digit#1 printf_number_buffer::format_justify_left#10 ] zp[1]:28 [ main::x0#0 printf_padding::i#2 printf_padding::i#1 ]
zp[1]:36 [ main::y0#0 uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_zero_padding#10 ] zp[1]:29 [ main::y0#0 ultoa::digit#2 ultoa::digit#1 printf_number_buffer::format_justify_left#10 ]
zp[1]:37 [ main::y1#0 uctoa::started#2 uctoa::started#4 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] zp[1]:30 [ main::y1#0 uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_zero_padding#10 ]
zp[1]:38 [ main::y2#0 ] zp[1]:31 [ main::y2#0 uctoa::started#2 uctoa::started#4 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
reg byte x [ printf_uchar::uvalue#0 ] reg byte x [ printf_uchar::uvalue#0 ]
reg byte a [ cputs::c#1 ] reg byte a [ cputs::c#1 ]
reg byte a [ toupper::return#3 ] reg byte a [ toupper::return#3 ]
reg byte a [ strupr::$0 ] reg byte a [ strupr::$0 ]
reg byte a [ ultoa::$11 ] reg byte a [ ultoa::$11 ]
reg byte a [ ultoa::$10 ] reg byte a [ ultoa::$10 ]
zp[4]:39 [ ultoa::digit_value#0 ultoa_append::sub#0 ] zp[4]:32 [ ultoa::digit_value#0 ultoa_append::sub#0 ]
reg byte x [ uctoa_append::return#0 ] reg byte x [ uctoa_append::return#0 ]
reg byte a [ abs_u8::return#0 ] reg byte a [ abs_u8::return#0 ]
zp[1]:43 [ line::dx#0 uctoa::digit_value#0 uctoa_append::sub#0 ] zp[1]:36 [ line::dx#0 uctoa::digit_value#0 uctoa_append::sub#0 ]
reg byte a [ abs_u8::return#1 ] reg byte a [ abs_u8::return#1 ]
zp[1]:44 [ line::dy#0 ] zp[1]:37 [ line::dy#0 ]
reg byte a [ sgn_u8::return#0 ] reg byte a [ sgn_u8::return#0 ]
zp[1]:45 [ line::sx#0 ] zp[1]:38 [ line::sx#0 ]
reg byte a [ sgn_u8::return#1 ] reg byte a [ sgn_u8::return#1 ]
zp[1]:46 [ line::sy#0 ] zp[1]:39 [ line::sy#0 ]
reg byte a [ plot::$0 ] reg byte a [ line::plot1_$0 ]
reg byte a [ plot::$3 ] reg byte a [ line::plot1_$2 ]
zp[2]:47 [ plot::column#0 cputln::ln_offset#0 memcpy::src_end#0 ] zp[2]:40 [ line::plot1_column#0 cputln::ln_offset#0 ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 strlen::str#2 strlen::str#0 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 memset::num#6 memset::end#0 ]
zp[1]:49 [ plot::$2 ] zp[1]:42 [ line::plot1_$1 ]
reg byte a [ line::plot2_$0 ]
reg byte a [ line::plot2_$2 ]
zp[2]:43 [ line::plot2_column#0 memcpy::src_end#0 ]
zp[1]:45 [ line::plot2_$1 ]
reg byte a [ line::plot3_$0 ]
reg byte a [ line::plot3_$2 ]
zp[2]:46 [ line::plot3_column#0 strupr::src#2 strupr::src#1 cputs::s#4 cputs::s#5 cputs::s#0 ]
zp[1]:48 [ line::plot3_$1 ]
reg byte a [ line::plot4_$0 ]
reg byte a [ line::plot4_$2 ]
zp[2]:49 [ line::plot4_column#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 memset::str#7 memset::dst#2 memset::dst#4 memset::dst#1 ]
reg byte a [ line::plot4_$1 ]
reg byte a [ sgn_u8::$0 ] reg byte a [ sgn_u8::$0 ]
reg byte a [ abs_u8::$0 ] reg byte x [ abs_u8::$0 ]
reg byte a [ kbhit::return#2 ] reg byte a [ kbhit::return#2 ]
reg byte a [ irq_bottom_2::$0 ] reg byte a [ irq_bottom_2::$0 ]
reg byte a [ kbhit::return#0 ] reg byte a [ kbhit::return#0 ]