mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-08 14:37:40 +00:00
Added first conio implementation compatible with cc65 and included a conio example from cc65.
This commit is contained in:
parent
2de71b4cd1
commit
c604e16630
@ -0,0 +1,7 @@
|
||||
sty $ff
|
||||
clc
|
||||
adc $ff
|
||||
sta {m1}
|
||||
lda #0
|
||||
adc #0
|
||||
sta {m1}+1
|
77
src/main/kc/include/conio.h
Normal file
77
src/main/kc/include/conio.h
Normal file
@ -0,0 +1,77 @@
|
||||
// Provides provide console input/output
|
||||
// Implements similar functions as conio.h from CC65 for compatibility
|
||||
// See https://github.com/cc65/cc65/blob/master/include/conio.h
|
||||
|
||||
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
|
||||
void clrscr(void);
|
||||
|
||||
// Set the cursor to the specified position
|
||||
void gotoxy(unsigned char x, unsigned char y);
|
||||
|
||||
// Return the X position of the cursor
|
||||
unsigned char wherex(void);
|
||||
|
||||
// Return the Y position of the cursor
|
||||
unsigned char wherey(void);
|
||||
|
||||
// Return the current screen size.
|
||||
void screensize(unsigned char* x, unsigned char* y);
|
||||
|
||||
// Output one character at the current cursor position
|
||||
void cputc(char c);
|
||||
|
||||
// Move cursor and output one character
|
||||
// Same as "gotoxy (x, y); cputc (c);"
|
||||
void cputcxy (unsigned char x, unsigned char y, char c);
|
||||
|
||||
// Output a NUL-terminated string at the current cursor position
|
||||
void cputs(const char* s);
|
||||
|
||||
// Move cursor and output a NUL-terminated string
|
||||
// Same as "gotoxy (x, y); puts (s);"
|
||||
void cputsxy(unsigned char x, unsigned char y, const char* s);
|
||||
|
||||
// Output a horizontal line with the given length starting at the current cursor position.
|
||||
void chline(unsigned char length);
|
||||
|
||||
// Output a vertical line with the given length at the current cursor position.
|
||||
void cvline (unsigned char length);
|
||||
|
||||
// Move cursor and output a vertical line with the given length
|
||||
// Same as "gotoxy (x, y); cvline (length);"
|
||||
void cvlinexy(unsigned char x, unsigned char y, unsigned char length);
|
||||
|
||||
// Set the color for text output. The old color setting is returned.
|
||||
unsigned char textcolor(unsigned char color);
|
||||
|
||||
// Set the color for the background. The old color setting is returned.
|
||||
unsigned char bgcolor(unsigned char color);
|
||||
|
||||
// Set the color for the border. The old color setting is returned.
|
||||
unsigned char bordercolor(unsigned char color);
|
||||
|
||||
// Return true if there's a key waiting, return false if not
|
||||
unsigned char kbhit (void);
|
||||
|
||||
// If onoff is 1, a cursor is displayed when waiting for keyboard input.
|
||||
// If onoff is 0, the cursor is hidden when waiting for keyboard input.
|
||||
// The function returns the old cursor setting.
|
||||
unsigned char cursor(unsigned char onoff);
|
||||
|
||||
|
||||
// The horizontal line character
|
||||
const char CH_HLINE = 0x40;
|
||||
// The vertical line character
|
||||
const char CH_VLINE = 0x5d;
|
||||
// The upper left corner character
|
||||
const char CH_ULCORNER = 0x70;
|
||||
// The upper right corner character
|
||||
const char CH_URCORNER = 0x6e;
|
||||
// The lower left corner character
|
||||
const char CH_LLCORNER = 0x6d;
|
||||
// The lower right corner character
|
||||
const char CH_LRCORNER = 0x7d;
|
||||
// The left T character
|
||||
const char CH_LTEE = 0x6b;
|
||||
// The right T character
|
||||
const char CH_RTEE = 0x73;
|
@ -87,6 +87,10 @@ const byte KEY_RUNSTOP = $3f;
|
||||
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
|
||||
void keyboard_init();
|
||||
|
||||
// Check if any key is currently pressed on the keyboard matrix
|
||||
// Return 0 if no key is pressed and not 0 if any key is pressed
|
||||
byte keyboard_matrix_any(void);
|
||||
|
||||
// Read a single row of the keyboard matrix
|
||||
// The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs.
|
||||
// Returns the keys pressed on the row as bits according to the C64 key matrix.
|
||||
|
182
src/main/kc/lib/conio.c
Normal file
182
src/main/kc/lib/conio.c
Normal file
@ -0,0 +1,182 @@
|
||||
// Provides provide console input/output
|
||||
// Implements similar functions as conio.h from CC65 for compatibility
|
||||
// See https://github.com/cc65/cc65/blob/master/include/conio.h
|
||||
#include <conio.h>
|
||||
|
||||
// The text screen address
|
||||
char * const CONIO_SCREEN_TEXT = 0x0400;
|
||||
// The color screen address
|
||||
char * const CONIO_SCREEN_COLORS = 0xd800;
|
||||
// The background color register address
|
||||
char * const CONIO_BGCOLOR = 0xd021;
|
||||
// The border color register address
|
||||
char * const CONIO_BORDERCOLOR = 0xd020;
|
||||
// CIA#1 Port A: keyboard matrix columns and joystick #2
|
||||
char* const CONIO_CIA1_PORT_A = 0xdc00;
|
||||
// CIA#1 Port B: keyboard matrix rows and joystick #1.
|
||||
char* const CONIO_CIA1_PORT_B = 0xdc01;
|
||||
// The screen width
|
||||
const char CONIO_WIDTH = 40;
|
||||
// The screen height
|
||||
const char CONIO_HEIGHT = 25;
|
||||
|
||||
// The default text color
|
||||
const char CONIO_TEXTCOLOR_DEFAULT = 0xe;
|
||||
|
||||
// The current cursor x-position
|
||||
char conio_cursor_x = 0;
|
||||
// The current cursor y-position
|
||||
char conio_cursor_y = 0;
|
||||
// The current cursor address
|
||||
char *conio_cursor_text = CONIO_SCREEN_TEXT;
|
||||
// The current cursor address
|
||||
char *conio_cursor_color = CONIO_SCREEN_COLORS;
|
||||
// The current text color
|
||||
char conio_textcolor = CONIO_TEXTCOLOR_DEFAULT;
|
||||
// Is a cursor whown when waiting for input (0: no, other: yes)
|
||||
char conio_display_cursor = 0;
|
||||
|
||||
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
|
||||
void clrscr(void) {
|
||||
char* line_text = CONIO_SCREEN_TEXT;
|
||||
char* line_cols = CONIO_SCREEN_COLORS;
|
||||
for( char l=0;l<CONIO_HEIGHT; l++ ) {
|
||||
for( char c=0;c<CONIO_WIDTH; c++ ) {
|
||||
line_text[c] = ' ';
|
||||
line_cols[c] = conio_textcolor;
|
||||
}
|
||||
line_text += CONIO_WIDTH;
|
||||
line_cols += CONIO_WIDTH;
|
||||
}
|
||||
conio_cursor_x = 0;
|
||||
conio_cursor_y = 0;
|
||||
conio_cursor_text = CONIO_SCREEN_TEXT;
|
||||
conio_cursor_color = CONIO_SCREEN_COLORS;
|
||||
}
|
||||
|
||||
// Set the cursor to the specified position
|
||||
void gotoxy(unsigned char x, unsigned char y) {
|
||||
if(x>=CONIO_WIDTH) x = 0;
|
||||
if(y>=CONIO_HEIGHT) y = 0;
|
||||
conio_cursor_x = x;
|
||||
conio_cursor_y = y;
|
||||
unsigned int offset = (unsigned int)y*CONIO_WIDTH + x;
|
||||
conio_cursor_text = CONIO_SCREEN_TEXT + offset;
|
||||
conio_cursor_color = CONIO_SCREEN_COLORS + offset;
|
||||
}
|
||||
|
||||
// Return the current screen size.
|
||||
void screensize(unsigned char* x, unsigned char* y) {
|
||||
*x = CONIO_WIDTH;
|
||||
*y = CONIO_HEIGHT;
|
||||
}
|
||||
|
||||
// Return the X position of the cursor
|
||||
inline unsigned char wherex(void) {
|
||||
return conio_cursor_x;
|
||||
}
|
||||
|
||||
// Return the Y position of the cursor
|
||||
inline unsigned char wherey(void) {
|
||||
return conio_cursor_y;
|
||||
}
|
||||
|
||||
// Output one character at the current cursor position
|
||||
// Moves the cursor forward
|
||||
void cputc(char c) {
|
||||
if(c=='\n') {
|
||||
gotoxy(0, conio_cursor_y+1);
|
||||
} else {
|
||||
*conio_cursor_text++ = c;
|
||||
*conio_cursor_color++ = conio_textcolor;
|
||||
if(++conio_cursor_x==CONIO_WIDTH) {
|
||||
conio_cursor_x = 0;
|
||||
if(++conio_cursor_y==CONIO_HEIGHT) {
|
||||
gotoxy(0,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Move cursor and output one character
|
||||
// Same as "gotoxy (x, y); cputc (c);"
|
||||
void cputcxy(unsigned char x, unsigned char y, char c) {
|
||||
gotoxy(x, y);
|
||||
cputc(c);
|
||||
}
|
||||
|
||||
|
||||
// Output a NUL-terminated string at the current cursor position
|
||||
void cputs(const char* s) {
|
||||
char c;
|
||||
while(c=*s++)
|
||||
cputc(c);
|
||||
}
|
||||
|
||||
// Move cursor and output a NUL-terminated string
|
||||
// Same as "gotoxy (x, y); puts (s);"
|
||||
void cputsxy(unsigned char x, unsigned char y, const char* s) {
|
||||
gotoxy(x, y);
|
||||
cputs(s);
|
||||
}
|
||||
|
||||
// Output a horizontal line with the given length starting at the current cursor position.
|
||||
void chline(unsigned char length) {
|
||||
for(char i=0;i<length;i++)
|
||||
cputc(CH_HLINE);
|
||||
}
|
||||
|
||||
// Output a vertical line with the given length at the current cursor position.
|
||||
void cvline (unsigned char length) {
|
||||
char x = conio_cursor_x;
|
||||
char y = conio_cursor_y;
|
||||
for(char i=0;i<length;i++) {
|
||||
cputc(CH_VLINE);
|
||||
gotoxy(x, ++y);
|
||||
}
|
||||
}
|
||||
|
||||
// Move cursor and output a vertical line with the given length
|
||||
// Same as "gotoxy (x, y); cvline (length);"
|
||||
void cvlinexy(unsigned char x, unsigned char y, unsigned char length) {
|
||||
gotoxy(x,y);
|
||||
cvline(length);
|
||||
}
|
||||
|
||||
|
||||
// Set the color for text output. The old color setting is returned.
|
||||
unsigned char textcolor(unsigned char color) {
|
||||
char old = conio_textcolor;
|
||||
conio_textcolor = color;
|
||||
return old;
|
||||
}
|
||||
|
||||
// Set the color for the background. The old color setting is returned.
|
||||
unsigned char bgcolor(unsigned char color) {
|
||||
char old = *CONIO_BGCOLOR;
|
||||
*CONIO_BGCOLOR = color;
|
||||
return old;
|
||||
}
|
||||
|
||||
// Set the color for the border. The old color setting is returned.
|
||||
unsigned char bordercolor(unsigned char color)
|
||||
{
|
||||
char old = *CONIO_BORDERCOLOR;
|
||||
*CONIO_BORDERCOLOR = color;
|
||||
return old;
|
||||
}
|
||||
|
||||
// Return true if there's a key waiting, return false if not
|
||||
unsigned char kbhit (void) {
|
||||
*CONIO_CIA1_PORT_A = 0;
|
||||
return ~*CONIO_CIA1_PORT_B;
|
||||
}
|
||||
|
||||
// If onoff is 1, a cursor is displayed when waiting for keyboard input.
|
||||
// If onoff is 0, the cursor is hidden when waiting for keyboard input.
|
||||
// The function returns the old cursor setting.
|
||||
unsigned char cursor(unsigned char onoff) {
|
||||
char old = conio_display_cursor;
|
||||
conio_display_cursor = onoff;
|
||||
return old;
|
||||
}
|
@ -45,6 +45,14 @@ void keyboard_init() {
|
||||
// Keyboard Matrix Columns Read Mode
|
||||
*CIA1_PORT_B_DDR = $00;
|
||||
}
|
||||
|
||||
// Check if any key is currently pressed on the keyboard matrix
|
||||
// Return 0 if no key is pressed and not 0 if any key is pressed
|
||||
byte keyboard_matrix_any(void) {
|
||||
*CIA1_PORT_A = 0;
|
||||
return ~*CIA1_PORT_B;
|
||||
}
|
||||
|
||||
// Read a single row of the keyboard matrix
|
||||
// The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs.
|
||||
// Returns the keys pressed on the row as bits according to the C64 key matrix.
|
||||
|
@ -40,6 +40,11 @@ public class TestPrograms {
|
||||
public TestPrograms() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConioNachtScreen() throws IOException, URISyntaxException {
|
||||
compileAndCompare("examples/conio/nacht-screen.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPostIncrementProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("post-increment-problem.c");
|
||||
|
92
src/test/kc/examples/conio/nacht-screen.c
Normal file
92
src/test/kc/examples/conio/nacht-screen.c
Normal file
@ -0,0 +1,92 @@
|
||||
// Show a nice screen using conio.h
|
||||
// From CC65 sample "Eine kleine Nachtmusik" by Ullrich von Bassewitz
|
||||
// https://github.com/cc65/cc65/blob/master/samples/nachtm.c
|
||||
|
||||
#include <conio.h>
|
||||
#include <string.h>
|
||||
|
||||
const char COLOR_GRAY3 = 0x0f;
|
||||
const char COLOR_BLACK = 0x00;
|
||||
char * const VIC_MEMORY = 0xd018;
|
||||
|
||||
static unsigned char XSize, YSize;
|
||||
|
||||
void main() {
|
||||
*VIC_MEMORY = 0x17;
|
||||
screensize(&XSize, &YSize);
|
||||
MakeNiceScreen();
|
||||
while(!kbhit()) {}
|
||||
clrscr ();
|
||||
}
|
||||
|
||||
void MakeTeeLine (unsigned char Y)
|
||||
/* Make a divider line */
|
||||
{
|
||||
cputcxy (0, Y, CH_LTEE);
|
||||
chline (XSize - 2);
|
||||
cputc (CH_RTEE);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
unsigned char Y;
|
||||
char Msg[40];
|
||||
} TextDesc;
|
||||
|
||||
void MakeNiceScreen (void)
|
||||
/* Make a nice screen */
|
||||
{
|
||||
|
||||
static TextDesc Text [] = {
|
||||
{ 2, "Wolfgang Amadeus Mozart" },
|
||||
{ 4, "\"Eine kleine Nachtmusik\"" },
|
||||
{ 5, "(KV 525)" },
|
||||
{ 9, "Ported to the SID in 1987 by" },
|
||||
{ 11, "Joachim von Bassewitz" },
|
||||
{ 12, "(joachim@von-bassewitz.de)" },
|
||||
{ 13, "and" },
|
||||
{ 14, "Ullrich von Bassewitz" },
|
||||
{ 15, "(ullrich@von-bassewitz.de)" },
|
||||
{ 18, "C Implementation by" },
|
||||
{ 19, "Ullrich von Bassewitz" },
|
||||
{ 23, "Press any key to quit..." }
|
||||
};
|
||||
|
||||
register const TextDesc* T;
|
||||
unsigned char I;
|
||||
unsigned char X;
|
||||
|
||||
/* Clear the screen hide the cursor, set colors */
|
||||
textcolor (COLOR_GRAY3);
|
||||
bordercolor (COLOR_BLACK);
|
||||
bgcolor (COLOR_BLACK);
|
||||
clrscr ();
|
||||
cursor (0);
|
||||
|
||||
/* Top line */
|
||||
cputcxy (0, 0, CH_ULCORNER);
|
||||
chline (XSize - 2);
|
||||
cputc (CH_URCORNER);
|
||||
|
||||
/* Left line */
|
||||
cvlinexy (0, 1, 23);
|
||||
|
||||
/* Bottom line */
|
||||
cputc (CH_LLCORNER);
|
||||
chline (XSize - 2);
|
||||
cputc (CH_LRCORNER);
|
||||
|
||||
/* Right line */
|
||||
cvlinexy (XSize - 1, 1, 23);
|
||||
|
||||
/* Several divider lines */
|
||||
MakeTeeLine (7);
|
||||
MakeTeeLine (22);
|
||||
|
||||
/* Write something into the frame */
|
||||
for (I = 0, T = Text; I < sizeof (Text) / sizeof (TextDesc); ++I) {
|
||||
X = (XSize - (char)strlen (T->Msg)) >> 1;
|
||||
cputsxy (X, T->Y, T->Msg);
|
||||
++T;
|
||||
}
|
||||
|
||||
}
|
@ -72,27 +72,28 @@ Culled Empty Block (label) @40
|
||||
Culled Empty Block (label) @41
|
||||
Culled Empty Block (label) @42
|
||||
Culled Empty Block (label) @43
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @44
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @45
|
||||
Culled Empty Block (label) @46
|
||||
Culled Empty Block (label) keyboard_event_scan::@22
|
||||
Culled Empty Block (label) keyboard_event_scan::@13
|
||||
Culled Empty Block (label) keyboard_event_scan::@15
|
||||
Culled Empty Block (label) keyboard_event_scan::@19
|
||||
Culled Empty Block (label) keyboard_event_scan::@4
|
||||
Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) keyboard_event_pressed::@1
|
||||
Culled Empty Block (label) @48
|
||||
Culled Empty Block (label) keyboard_event_pressed::@1
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) keyboard_event_get::@4
|
||||
Culled Empty Block (label) keyboard_event_get::@2
|
||||
Culled Empty Block (label) keyboard_event_get::@5
|
||||
Culled Empty Block (label) keyboard_event_get::@6
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) bitmap_init::@8
|
||||
Culled Empty Block (label) @50
|
||||
Culled Empty Block (label) bitmap_clear::@4
|
||||
Culled Empty Block (label) bitmap_init::@8
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) bitmap_clear::@4
|
||||
Culled Empty Block (label) @52
|
||||
Culled Empty Block (label) @53
|
||||
Culled Empty Block (label) bitmap_line::@12
|
||||
Culled Empty Block (label) bitmap_line::@6
|
||||
Culled Empty Block (label) bitmap_line::@14
|
||||
@ -107,20 +108,20 @@ Culled Empty Block (label) bitmap_line::@24
|
||||
Culled Empty Block (label) bitmap_line::@23
|
||||
Culled Empty Block (label) bitmap_line::@26
|
||||
Culled Empty Block (label) bitmap_line::@28
|
||||
Culled Empty Block (label) @53
|
||||
Culled Empty Block (label) bitmap_line_xdyi::@4
|
||||
Culled Empty Block (label) @54
|
||||
Culled Empty Block (label) bitmap_line_xdyd::@4
|
||||
Culled Empty Block (label) bitmap_line_xdyi::@4
|
||||
Culled Empty Block (label) @55
|
||||
Culled Empty Block (label) bitmap_line_ydxi::@4
|
||||
Culled Empty Block (label) bitmap_line_xdyd::@4
|
||||
Culled Empty Block (label) @56
|
||||
Culled Empty Block (label) bitmap_line_ydxd::@4
|
||||
Culled Empty Block (label) bitmap_line_ydxi::@4
|
||||
Culled Empty Block (label) @57
|
||||
Culled Empty Block (label) bitmap_line_ydxd::@4
|
||||
Culled Empty Block (label) @58
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) @58
|
||||
Culled Empty Block (label) @59
|
||||
Culled Empty Block (label) get_plane::@14
|
||||
Culled Empty Block (label) get_plane::@42
|
||||
Culled Empty Block (label) get_plane::@15
|
||||
@ -162,7 +163,7 @@ Culled Empty Block (label) get_plane::@66
|
||||
Culled Empty Block (label) get_plane::@67
|
||||
Culled Empty Block (label) get_plane::@68
|
||||
Culled Empty Block (label) get_plane::@69
|
||||
Culled Empty Block (label) @59
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) get_vic_screen::@5
|
||||
Culled Empty Block (label) get_vic_screen::@15
|
||||
Culled Empty Block (label) get_vic_screen::@6
|
||||
@ -177,13 +178,13 @@ Culled Empty Block (label) get_vic_screen::@21
|
||||
Culled Empty Block (label) get_vic_screen::@22
|
||||
Culled Empty Block (label) get_vic_screen::@23
|
||||
Culled Empty Block (label) get_vic_screen::@24
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) @61
|
||||
Culled Empty Block (label) get_vic_charset::@2
|
||||
Culled Empty Block (label) get_vic_charset::@6
|
||||
Culled Empty Block (label) get_vic_charset::@7
|
||||
Culled Empty Block (label) get_vic_charset::@8
|
||||
Culled Empty Block (label) get_vic_charset::@9
|
||||
Culled Empty Block (label) @61
|
||||
Culled Empty Block (label) @62
|
||||
Culled Empty Block (label) apply_preset::@12
|
||||
Culled Empty Block (label) apply_preset::@34
|
||||
Culled Empty Block (label) apply_preset::@13
|
||||
@ -209,7 +210,7 @@ Culled Empty Block (label) apply_preset::@48
|
||||
Culled Empty Block (label) apply_preset::@47
|
||||
Culled Empty Block (label) apply_preset::@49
|
||||
Culled Empty Block (label) apply_preset::@50
|
||||
Culled Empty Block (label) @62
|
||||
Culled Empty Block (label) @63
|
||||
Culled Empty Block (label) render_preset_name::@12
|
||||
Culled Empty Block (label) render_preset_name::@34
|
||||
Culled Empty Block (label) render_preset_name::@13
|
||||
@ -231,7 +232,7 @@ Culled Empty Block (label) render_preset_name::@42
|
||||
Culled Empty Block (label) render_preset_name::@21
|
||||
Culled Empty Block (label) render_preset_name::@43
|
||||
Culled Empty Block (label) render_preset_name::@44
|
||||
Culled Empty Block (label) @63
|
||||
Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) gfx_mode::@27
|
||||
Culled Empty Block (label) gfx_mode::@11
|
||||
Culled Empty Block (label) gfx_mode::@28
|
||||
@ -248,27 +249,26 @@ Culled Empty Block (label) gfx_mode::@42
|
||||
Culled Empty Block (label) gfx_mode::@40
|
||||
Culled Empty Block (label) gfx_mode::@41
|
||||
Culled Empty Block (label) gfx_mode::@45
|
||||
Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) @65
|
||||
Culled Empty Block (label) @66
|
||||
Culled Empty Block (label) gfx_init_screen0::@4
|
||||
Culled Empty Block (label) @67
|
||||
Culled Empty Block (label) gfx_init_screen1::@4
|
||||
Culled Empty Block (label) gfx_init_screen0::@4
|
||||
Culled Empty Block (label) @68
|
||||
Culled Empty Block (label) gfx_init_screen2::@4
|
||||
Culled Empty Block (label) gfx_init_screen1::@4
|
||||
Culled Empty Block (label) @69
|
||||
Culled Empty Block (label) gfx_init_screen3::@4
|
||||
Culled Empty Block (label) gfx_init_screen2::@4
|
||||
Culled Empty Block (label) @70
|
||||
Culled Empty Block (label) gfx_init_screen4::@4
|
||||
Culled Empty Block (label) gfx_init_screen3::@4
|
||||
Culled Empty Block (label) @71
|
||||
Culled Empty Block (label) gfx_init_screen4::@4
|
||||
Culled Empty Block (label) @72
|
||||
Culled Empty Block (label) gfx_init_vic_bitmap::@4
|
||||
Culled Empty Block (label) gfx_init_vic_bitmap::@3
|
||||
Culled Empty Block (label) gfx_init_vic_bitmap::@5
|
||||
Culled Empty Block (label) gfx_init_vic_bitmap::@6
|
||||
Culled Empty Block (label) @72
|
||||
Culled Empty Block (label) @73
|
||||
Culled Empty Block (label) gfx_init_plane_horisontal::@6
|
||||
Culled Empty Block (label) @74
|
||||
Culled Empty Block (label) gfx_init_plane_horisontal::@6
|
||||
Culled Empty Block (label) @75
|
||||
Culled Empty Block (label) @76
|
||||
Culled Empty Block (label) @77
|
||||
@ -276,6 +276,7 @@ Culled Empty Block (label) @78
|
||||
Culled Empty Block (label) @79
|
||||
Culled Empty Block (label) @80
|
||||
Culled Empty Block (label) @81
|
||||
Culled Empty Block (label) @82
|
||||
Culled Empty Block (label) form_mode::@4
|
||||
Culled Empty Block (label) form_mode::@16
|
||||
Culled Empty Block (label) form_mode::@5
|
||||
@ -290,14 +291,14 @@ Culled Empty Block (label) form_mode::@15
|
||||
Culled Empty Block (label) form_mode::@19
|
||||
Culled Empty Block (label) form_mode::@20
|
||||
Culled Empty Block (label) form_set_screen::@2
|
||||
Culled Empty Block (label) @83
|
||||
Culled Empty Block (label) form_field_ptr::@1
|
||||
Culled Empty Block (label) @84
|
||||
Culled Empty Block (label) form_field_ptr::@1
|
||||
Culled Empty Block (label) @85
|
||||
Culled Empty Block (label) form_render_values::@4
|
||||
Culled Empty Block (label) form_render_values::@3
|
||||
Culled Empty Block (label) form_render_values::@5
|
||||
Culled Empty Block (label) form_render_values::@6
|
||||
Culled Empty Block (label) @85
|
||||
Culled Empty Block (label) @86
|
||||
Culled Empty Block (label) form_control::@9
|
||||
Culled Empty Block (label) form_control::@20
|
||||
Culled Empty Block (label) form_control::@21
|
||||
@ -371,7 +372,7 @@ memset::@return: scope:[memset] from memset::@1
|
||||
(byte*) print_screen#0 ← (byte*)(number) $400
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@46
|
||||
to:@47
|
||||
|
||||
(void()) print_str_lines((byte*) print_str_lines::str)
|
||||
print_str_lines: scope:[print_str_lines] from form_mode::@22 form_mode::@25
|
||||
@ -541,13 +542,13 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri
|
||||
(byte) keyboard_matrix_read::return#1 ← (byte) keyboard_matrix_read::return#3
|
||||
return
|
||||
to:@return
|
||||
@46: scope:[] from @18
|
||||
@47: scope:[] from @18
|
||||
(byte*) print_char_cursor#60 ← phi( @18/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#60 ← phi( @18/(byte*) print_line_cursor#0 )
|
||||
(byte*) print_screen#37 ← phi( @18/(byte*) print_screen#0 )
|
||||
(byte) keyboard_events_size#0 ← (byte) 0
|
||||
(byte) keyboard_modifiers#0 ← (byte) 0
|
||||
to:@82
|
||||
to:@83
|
||||
|
||||
(void()) keyboard_event_scan()
|
||||
keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3 gfx_mode::@36
|
||||
@ -1360,14 +1361,14 @@ bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @86
|
||||
(byte) form_field_idx#48 ← phi( @86/(byte) form_field_idx#34 )
|
||||
(byte) keyboard_modifiers#82 ← phi( @86/(byte) keyboard_modifiers#52 )
|
||||
(byte) keyboard_events_size#91 ← phi( @86/(byte) keyboard_events_size#53 )
|
||||
(signed byte) form_cursor_count#43 ← phi( @86/(signed byte) form_cursor_count#26 )
|
||||
(byte*) print_char_cursor#61 ← phi( @86/(byte*) print_char_cursor#46 )
|
||||
(byte*) print_line_cursor#61 ← phi( @86/(byte*) print_line_cursor#44 )
|
||||
(byte*) print_screen#38 ← phi( @86/(byte*) print_screen#24 )
|
||||
main: scope:[main] from @87
|
||||
(byte) form_field_idx#48 ← phi( @87/(byte) form_field_idx#34 )
|
||||
(byte) keyboard_modifiers#82 ← phi( @87/(byte) keyboard_modifiers#52 )
|
||||
(byte) keyboard_events_size#91 ← phi( @87/(byte) keyboard_events_size#53 )
|
||||
(signed byte) form_cursor_count#43 ← phi( @87/(signed byte) form_cursor_count#26 )
|
||||
(byte*) print_char_cursor#61 ← phi( @87/(byte*) print_char_cursor#46 )
|
||||
(byte*) print_line_cursor#61 ← phi( @87/(byte*) print_line_cursor#44 )
|
||||
(byte*) print_screen#38 ← phi( @87/(byte*) print_screen#24 )
|
||||
asm { sei }
|
||||
*((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
|
||||
*((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
|
||||
@ -3260,15 +3261,15 @@ form_mode::@33: scope:[form_mode] from form_mode::@32
|
||||
(byte*) print_line_cursor#51 ← phi( form_mode::@32/(byte*) print_line_cursor#59 )
|
||||
(byte*) print_screen#30 ← phi( form_mode::@32/(byte*) print_screen#36 )
|
||||
to:form_mode::@3
|
||||
@82: scope:[] from @46
|
||||
(byte) keyboard_modifiers#75 ← phi( @46/(byte) keyboard_modifiers#0 )
|
||||
(byte) keyboard_events_size#76 ← phi( @46/(byte) keyboard_events_size#0 )
|
||||
(byte*) print_char_cursor#55 ← phi( @46/(byte*) print_char_cursor#60 )
|
||||
(byte*) print_line_cursor#53 ← phi( @46/(byte*) print_line_cursor#60 )
|
||||
(byte*) print_screen#32 ← phi( @46/(byte*) print_screen#37 )
|
||||
@83: scope:[] from @47
|
||||
(byte) keyboard_modifiers#75 ← phi( @47/(byte) keyboard_modifiers#0 )
|
||||
(byte) keyboard_events_size#76 ← phi( @47/(byte) keyboard_events_size#0 )
|
||||
(byte*) print_char_cursor#55 ← phi( @47/(byte*) print_char_cursor#60 )
|
||||
(byte*) print_line_cursor#53 ← phi( @47/(byte*) print_line_cursor#60 )
|
||||
(byte*) print_screen#32 ← phi( @47/(byte*) print_screen#37 )
|
||||
(byte) form_field_idx#4 ← (byte) 0
|
||||
(signed byte) form_cursor_count#4 ← (signed byte)(const nomodify signed byte) FORM_CURSOR_BLINK/(number) 2
|
||||
to:@86
|
||||
to:@87
|
||||
|
||||
(void()) form_set_screen((byte*) form_set_screen::screen)
|
||||
form_set_screen: scope:[form_set_screen] from form_mode::@26
|
||||
@ -3579,24 +3580,24 @@ form_control::@16: scope:[form_control] from form_control::@5
|
||||
(signed byte) form_cursor_count#23 ← phi( form_control::@5/(signed byte) form_cursor_count#37 )
|
||||
(byte) form_control::return#5 ← (number) $ff
|
||||
to:form_control::@return
|
||||
@86: scope:[] from @82
|
||||
(byte) form_field_idx#34 ← phi( @82/(byte) form_field_idx#4 )
|
||||
(byte) keyboard_modifiers#52 ← phi( @82/(byte) keyboard_modifiers#75 )
|
||||
(byte) keyboard_events_size#53 ← phi( @82/(byte) keyboard_events_size#76 )
|
||||
(signed byte) form_cursor_count#26 ← phi( @82/(signed byte) form_cursor_count#4 )
|
||||
(byte*) print_char_cursor#46 ← phi( @82/(byte*) print_char_cursor#55 )
|
||||
(byte*) print_line_cursor#44 ← phi( @82/(byte*) print_line_cursor#53 )
|
||||
(byte*) print_screen#24 ← phi( @82/(byte*) print_screen#32 )
|
||||
@87: scope:[] from @83
|
||||
(byte) form_field_idx#34 ← phi( @83/(byte) form_field_idx#4 )
|
||||
(byte) keyboard_modifiers#52 ← phi( @83/(byte) keyboard_modifiers#75 )
|
||||
(byte) keyboard_events_size#53 ← phi( @83/(byte) keyboard_events_size#76 )
|
||||
(signed byte) form_cursor_count#26 ← phi( @83/(signed byte) form_cursor_count#4 )
|
||||
(byte*) print_char_cursor#46 ← phi( @83/(byte*) print_char_cursor#55 )
|
||||
(byte*) print_line_cursor#44 ← phi( @83/(byte*) print_line_cursor#53 )
|
||||
(byte*) print_screen#24 ← phi( @83/(byte*) print_screen#32 )
|
||||
call main
|
||||
to:@87
|
||||
@87: scope:[] from @86
|
||||
(byte) form_field_idx#24 ← phi( @86/(byte) form_field_idx#1 )
|
||||
(byte) keyboard_modifiers#33 ← phi( @86/(byte) keyboard_modifiers#9 )
|
||||
(byte) keyboard_events_size#36 ← phi( @86/(byte) keyboard_events_size#8 )
|
||||
(signed byte) form_cursor_count#17 ← phi( @86/(signed byte) form_cursor_count#1 )
|
||||
(byte*) print_char_cursor#36 ← phi( @86/(byte*) print_char_cursor#11 )
|
||||
(byte*) print_line_cursor#35 ← phi( @86/(byte*) print_line_cursor#10 )
|
||||
(byte*) print_screen#17 ← phi( @86/(byte*) print_screen#4 )
|
||||
to:@88
|
||||
@88: scope:[] from @87
|
||||
(byte) form_field_idx#24 ← phi( @87/(byte) form_field_idx#1 )
|
||||
(byte) keyboard_modifiers#33 ← phi( @87/(byte) keyboard_modifiers#9 )
|
||||
(byte) keyboard_events_size#36 ← phi( @87/(byte) keyboard_events_size#8 )
|
||||
(signed byte) form_cursor_count#17 ← phi( @87/(signed byte) form_cursor_count#1 )
|
||||
(byte*) print_char_cursor#36 ← phi( @87/(byte*) print_char_cursor#11 )
|
||||
(byte*) print_line_cursor#35 ← phi( @87/(byte*) print_line_cursor#10 )
|
||||
(byte*) print_screen#17 ← phi( @87/(byte*) print_screen#4 )
|
||||
(byte*) print_screen#8 ← (byte*) print_screen#17
|
||||
(byte*) print_line_cursor#18 ← (byte*) print_line_cursor#35
|
||||
(byte*) print_char_cursor#19 ← (byte*) print_char_cursor#36
|
||||
@ -3605,14 +3606,14 @@ form_control::@16: scope:[form_control] from form_control::@5
|
||||
(byte) keyboard_modifiers#16 ← (byte) keyboard_modifiers#33
|
||||
(byte) form_field_idx#10 ← (byte) form_field_idx#24
|
||||
to:@end
|
||||
@end: scope:[] from @87
|
||||
@end: scope:[] from @88
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @18
|
||||
(label) @46
|
||||
(label) @82
|
||||
(label) @86
|
||||
(label) @47
|
||||
(label) @83
|
||||
(label) @87
|
||||
(label) @88
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL = (byte*)(number) $d021
|
||||
@ -8972,10 +8973,10 @@ Added new block during phi lifting form_control::@37(between form_control::@11 a
|
||||
Added new block during phi lifting form_control::@38(between form_control::@19 and form_control::@22)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @18
|
||||
Adding NOP phi() at start of @46
|
||||
Adding NOP phi() at start of @82
|
||||
Adding NOP phi() at start of @86
|
||||
Adding NOP phi() at start of @47
|
||||
Adding NOP phi() at start of @83
|
||||
Adding NOP phi() at start of @87
|
||||
Adding NOP phi() at start of @88
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@7
|
||||
Adding NOP phi() at start of main::@8
|
||||
@ -9447,9 +9448,9 @@ Coalesced [1225] gfx_init_screen0::cx#3 ← gfx_init_screen0::cx#1
|
||||
Coalesced (already) [1226] gfx_init_screen0::ch#7 ← gfx_init_screen0::ch#1
|
||||
Coalesced down to 120 phi equivalence classes
|
||||
Culled Empty Block (label) @18
|
||||
Culled Empty Block (label) @46
|
||||
Culled Empty Block (label) @82
|
||||
Culled Empty Block (label) @87
|
||||
Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) @83
|
||||
Culled Empty Block (label) @88
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) gfx_mode::@25
|
||||
@ -9597,7 +9598,7 @@ Culled Empty Block (label) gfx_init_screen1::@5
|
||||
Culled Empty Block (label) gfx_init_screen1::@6
|
||||
Culled Empty Block (label) gfx_init_screen0::@5
|
||||
Culled Empty Block (label) gfx_init_screen0::@6
|
||||
Renumbering block @86 to @1
|
||||
Renumbering block @87 to @1
|
||||
Renumbering block memset::@2 to memset::@1
|
||||
Renumbering block memset::@4 to memset::@2
|
||||
Renumbering block memset::@5 to memset::@3
|
||||
|
@ -68,19 +68,20 @@ Culled Empty Block (label) @40
|
||||
Culled Empty Block (label) @41
|
||||
Culled Empty Block (label) @42
|
||||
Culled Empty Block (label) @43
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @44
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @45
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @46
|
||||
Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) @48
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) bitmap_init::@8
|
||||
Culled Empty Block (label) @50
|
||||
Culled Empty Block (label) bitmap_clear::@4
|
||||
Culled Empty Block (label) bitmap_init::@8
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) bitmap_clear::@4
|
||||
Culled Empty Block (label) @52
|
||||
Culled Empty Block (label) @53
|
||||
Culled Empty Block (label) bitmap_line::@12
|
||||
Culled Empty Block (label) bitmap_line::@6
|
||||
Culled Empty Block (label) bitmap_line::@14
|
||||
@ -95,20 +96,20 @@ Culled Empty Block (label) bitmap_line::@24
|
||||
Culled Empty Block (label) bitmap_line::@23
|
||||
Culled Empty Block (label) bitmap_line::@26
|
||||
Culled Empty Block (label) bitmap_line::@28
|
||||
Culled Empty Block (label) @53
|
||||
Culled Empty Block (label) bitmap_line_xdyi::@4
|
||||
Culled Empty Block (label) @54
|
||||
Culled Empty Block (label) bitmap_line_xdyd::@4
|
||||
Culled Empty Block (label) bitmap_line_xdyi::@4
|
||||
Culled Empty Block (label) @55
|
||||
Culled Empty Block (label) bitmap_line_ydxi::@4
|
||||
Culled Empty Block (label) bitmap_line_xdyd::@4
|
||||
Culled Empty Block (label) @56
|
||||
Culled Empty Block (label) bitmap_line_ydxd::@4
|
||||
Culled Empty Block (label) bitmap_line_ydxi::@4
|
||||
Culled Empty Block (label) @57
|
||||
Culled Empty Block (label) bitmap_line_ydxd::@4
|
||||
Culled Empty Block (label) @58
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) @58
|
||||
Culled Empty Block (label) @59
|
||||
Culled Empty Block (label) menu::@6
|
||||
Culled Empty Block (label) menu::@7
|
||||
Culled Empty Block (label) menu::@8
|
||||
@ -141,22 +142,22 @@ Culled Empty Block (label) mode_ctrl::@10
|
||||
Culled Empty Block (label) mode_ctrl::@11
|
||||
Culled Empty Block (label) mode_ctrl::@20
|
||||
Culled Empty Block (label) mode_ctrl::@31
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) @61
|
||||
Culled Empty Block (label) @62
|
||||
Culled Empty Block (label) @63
|
||||
Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) mode_stdbitmap::@10
|
||||
Culled Empty Block (label) mode_stdbitmap::@11
|
||||
Culled Empty Block (label) mode_stdbitmap::@12
|
||||
Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) @65
|
||||
Culled Empty Block (label) @66
|
||||
Culled Empty Block (label) @67
|
||||
Culled Empty Block (label) mode_twoplanebitmap::@12
|
||||
Culled Empty Block (label) @68
|
||||
Culled Empty Block (label) mode_twoplanebitmap::@12
|
||||
Culled Empty Block (label) @69
|
||||
Culled Empty Block (label) @70
|
||||
Culled Empty Block (label) @71
|
||||
Culled Empty Block (label) @72
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -219,7 +220,7 @@ memset::@return: scope:[memset] from memset::@1
|
||||
(byte*) print_screen#0 ← (byte*)(number) $400
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@59
|
||||
to:@60
|
||||
|
||||
(void()) print_str_lines((byte*) print_str_lines::str)
|
||||
print_str_lines: scope:[print_str_lines] from menu::@52
|
||||
@ -944,11 +945,11 @@ bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @72
|
||||
(byte) dtv_control#130 ← phi( @72/(byte) dtv_control#129 )
|
||||
(byte*) print_char_cursor#54 ← phi( @72/(byte*) print_char_cursor#51 )
|
||||
(byte*) print_line_cursor#52 ← phi( @72/(byte*) print_line_cursor#49 )
|
||||
(byte*) print_screen#33 ← phi( @72/(byte*) print_screen#32 )
|
||||
main: scope:[main] from @73
|
||||
(byte) dtv_control#130 ← phi( @73/(byte) dtv_control#129 )
|
||||
(byte*) print_char_cursor#54 ← phi( @73/(byte*) print_char_cursor#51 )
|
||||
(byte*) print_line_cursor#52 ← phi( @73/(byte*) print_line_cursor#49 )
|
||||
(byte*) print_screen#33 ← phi( @73/(byte*) print_screen#32 )
|
||||
asm { sei }
|
||||
*((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
|
||||
*((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
|
||||
@ -1507,12 +1508,12 @@ menu::@77: scope:[menu] from menu::@48
|
||||
(byte) dtv_control#69 ← phi( menu::@48/(byte) dtv_control#53 )
|
||||
(byte) dtv_control#14 ← (byte) dtv_control#69
|
||||
to:menu::@return
|
||||
@59: scope:[] from @18
|
||||
@60: scope:[] from @18
|
||||
(byte*) print_char_cursor#69 ← phi( @18/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#67 ← phi( @18/(byte*) print_line_cursor#0 )
|
||||
(byte*) print_screen#49 ← phi( @18/(byte*) print_screen#0 )
|
||||
(byte) dtv_control#15 ← (byte) 0
|
||||
to:@72
|
||||
to:@73
|
||||
|
||||
(void()) mode_ctrl()
|
||||
mode_ctrl: scope:[mode_ctrl] from mode_8bppchunkybmm::@11 mode_8bpppixelcell::@14 mode_ecmchar::@6 mode_hicolecmchar::@6 mode_hicolmcchar::@6 mode_hicolstdchar::@6 mode_mcchar::@6 mode_sixsfred2::@14 mode_sixsfred::@14 mode_stdbitmap::@9 mode_stdchar::@6 mode_twoplanebitmap::@18
|
||||
@ -3035,30 +3036,30 @@ mode_8bppchunkybmm::@return: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm
|
||||
(byte) dtv_control#53 ← (byte) dtv_control#96
|
||||
return
|
||||
to:@return
|
||||
@72: scope:[] from @59
|
||||
(byte) dtv_control#129 ← phi( @59/(byte) dtv_control#15 )
|
||||
(byte*) print_char_cursor#51 ← phi( @59/(byte*) print_char_cursor#69 )
|
||||
(byte*) print_line_cursor#49 ← phi( @59/(byte*) print_line_cursor#67 )
|
||||
(byte*) print_screen#32 ← phi( @59/(byte*) print_screen#49 )
|
||||
@73: scope:[] from @60
|
||||
(byte) dtv_control#129 ← phi( @60/(byte) dtv_control#15 )
|
||||
(byte*) print_char_cursor#51 ← phi( @60/(byte*) print_char_cursor#69 )
|
||||
(byte*) print_line_cursor#49 ← phi( @60/(byte*) print_line_cursor#67 )
|
||||
(byte*) print_screen#32 ← phi( @60/(byte*) print_screen#49 )
|
||||
call main
|
||||
to:@73
|
||||
@73: scope:[] from @72
|
||||
(byte) dtv_control#97 ← phi( @72/(byte) dtv_control#1 )
|
||||
(byte*) print_char_cursor#30 ← phi( @72/(byte*) print_char_cursor#11 )
|
||||
(byte*) print_line_cursor#29 ← phi( @72/(byte*) print_line_cursor#10 )
|
||||
(byte*) print_screen#15 ← phi( @72/(byte*) print_screen#4 )
|
||||
to:@74
|
||||
@74: scope:[] from @73
|
||||
(byte) dtv_control#97 ← phi( @73/(byte) dtv_control#1 )
|
||||
(byte*) print_char_cursor#30 ← phi( @73/(byte*) print_char_cursor#11 )
|
||||
(byte*) print_line_cursor#29 ← phi( @73/(byte*) print_line_cursor#10 )
|
||||
(byte*) print_screen#15 ← phi( @73/(byte*) print_screen#4 )
|
||||
(byte*) print_screen#7 ← (byte*) print_screen#15
|
||||
(byte*) print_line_cursor#15 ← (byte*) print_line_cursor#29
|
||||
(byte*) print_char_cursor#16 ← (byte*) print_char_cursor#30
|
||||
(byte) dtv_control#54 ← (byte) dtv_control#97
|
||||
to:@end
|
||||
@end: scope:[] from @73
|
||||
@end: scope:[] from @74
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @18
|
||||
(label) @59
|
||||
(label) @72
|
||||
(label) @60
|
||||
(label) @73
|
||||
(label) @74
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL = (byte*)(number) $d021
|
||||
@ -8095,9 +8096,9 @@ Added new block during phi lifting mode_8bppchunkybmm::@15(between mode_8bppchun
|
||||
Added new block during phi lifting mode_8bppchunkybmm::@16(between mode_8bppchunkybmm::@4 and mode_8bppchunkybmm::@5)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @18
|
||||
Adding NOP phi() at start of @59
|
||||
Adding NOP phi() at start of @72
|
||||
Adding NOP phi() at start of @60
|
||||
Adding NOP phi() at start of @73
|
||||
Adding NOP phi() at start of @74
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -8509,8 +8510,8 @@ Coalesced (already) [1209] print_line_cursor#99 ← print_line_cursor#19
|
||||
Coalesced [1222] memset::dst#4 ← memset::dst#1
|
||||
Coalesced down to 125 phi equivalence classes
|
||||
Culled Empty Block (label) @18
|
||||
Culled Empty Block (label) @59
|
||||
Culled Empty Block (label) @73
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) @74
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) menu::@2
|
||||
@ -8641,7 +8642,7 @@ Culled Empty Block (label) print_ln::@3
|
||||
Culled Empty Block (label) print_cls::@1
|
||||
Culled Empty Block (label) memset::@2
|
||||
Culled Empty Block (label) memset::@1
|
||||
Renumbering block @72 to @1
|
||||
Renumbering block @73 to @1
|
||||
Renumbering block memset::@4 to memset::@1
|
||||
Renumbering block memset::@5 to memset::@2
|
||||
Renumbering block print_str_lines::@4 to print_str_lines::@2
|
||||
|
@ -47,10 +47,10 @@ Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) @15
|
||||
@ -89,13 +89,13 @@ Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) @48
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) @50
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) mulf_init::@5
|
||||
Culled Empty Block (label) mulf_init::@6
|
||||
Culled Empty Block (label) mulf_init::@8
|
||||
Culled Empty Block (label) mulf_init::@13
|
||||
Culled Empty Block (label) mulf_init::@14
|
||||
Culled Empty Block (label) mulf_init::@16
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) @52
|
||||
Culled Empty Block (label) @53
|
||||
Culled Empty Block (label) @54
|
||||
@ -104,6 +104,7 @@ Culled Empty Block (label) @56
|
||||
Culled Empty Block (label) @57
|
||||
Culled Empty Block (label) @58
|
||||
Culled Empty Block (label) @59
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@1
|
||||
Culled Empty Block (label) main::vicSelectGfxBank1_@return
|
||||
Culled Empty Block (label) main::toD0181_@1
|
||||
@ -124,9 +125,9 @@ Culled Empty Block (label) main::toD0182_@1
|
||||
Culled Empty Block (label) main::@21
|
||||
Culled Empty Block (label) main::@22
|
||||
Culled Empty Block (label) renderBobInit::@4
|
||||
Culled Empty Block (label) @61
|
||||
Culled Empty Block (label) @62
|
||||
Culled Empty Block (label) @63
|
||||
Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) prepareBobs::@17
|
||||
Culled Empty Block (label) prepareBobs::@3
|
||||
Culled Empty Block (label) prepareBobs::@18
|
||||
@ -137,7 +138,7 @@ Culled Empty Block (label) prepareBobs::@11
|
||||
Culled Empty Block (label) prepareBobs::@12
|
||||
Culled Empty Block (label) prepareBobs::@13
|
||||
Culled Empty Block (label) prepareBobs::@16
|
||||
Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) @65
|
||||
Culled Empty Block (label) protoBobShiftRight::@9
|
||||
Culled Empty Block (label) protoBobShiftRight::@3
|
||||
Culled Empty Block (label) protoBobShiftRight::@10
|
||||
@ -145,7 +146,7 @@ Culled Empty Block (label) protoBobShiftRight::@11
|
||||
Culled Empty Block (label) protoBobShiftRight::@12
|
||||
Culled Empty Block (label) protoBobShiftRight::@14
|
||||
Culled Empty Block (label) protoBobShiftRight::@15
|
||||
Culled Empty Block (label) @65
|
||||
Culled Empty Block (label) @66
|
||||
Culled Empty Block (label) protoBobShiftDown::@4
|
||||
Culled Empty Block (label) protoBobShiftDown::@5
|
||||
Culled Empty Block (label) protoBobShiftDown::@6
|
||||
@ -162,11 +163,11 @@ Culled Empty Block (label) charsetFindOrAddGlyph::@23
|
||||
Culled Empty Block (label) charsetFindOrAddGlyph::@24
|
||||
Culled Empty Block (label) charsetFindOrAddGlyph::@25
|
||||
Culled Empty Block (label) charsetFindOrAddGlyph::@26
|
||||
Culled Empty Block (label) @68
|
||||
Culled Empty Block (label) @69
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@60
|
||||
to:@61
|
||||
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
memset: scope:[memset] from main::@24
|
||||
@ -353,11 +354,11 @@ mulf_init::@return: scope:[mulf_init] from mulf_init::@11
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @69
|
||||
(byte**) renderBobCleanupNext#50 ← phi( @69/(byte**) renderBobCleanupNext#19 )
|
||||
(byte) bob_charset_next_id#28 ← phi( @69/(byte) bob_charset_next_id#27 )
|
||||
(byte) progress_idx#28 ← phi( @69/(byte) progress_idx#27 )
|
||||
(byte*) progress_cursor#28 ← phi( @69/(byte*) progress_cursor#27 )
|
||||
main: scope:[main] from @70
|
||||
(byte**) renderBobCleanupNext#50 ← phi( @70/(byte**) renderBobCleanupNext#19 )
|
||||
(byte) bob_charset_next_id#28 ← phi( @70/(byte) bob_charset_next_id#27 )
|
||||
(byte) progress_idx#28 ← phi( @70/(byte) progress_idx#27 )
|
||||
(byte*) progress_cursor#28 ← phi( @70/(byte*) progress_cursor#27 )
|
||||
call mulf_init
|
||||
to:main::@27
|
||||
main::@27: scope:[main] from main
|
||||
@ -735,9 +736,9 @@ main::@return: scope:[main] from main::@26
|
||||
(byte**) renderBobCleanupNext#2 ← (byte**) renderBobCleanupNext#11
|
||||
return
|
||||
to:@return
|
||||
@60: scope:[] from @begin
|
||||
@61: scope:[] from @begin
|
||||
(byte**) renderBobCleanupNext#3 ← (byte**) 0
|
||||
to:@66
|
||||
to:@67
|
||||
|
||||
(void()) renderBobInit()
|
||||
renderBobInit: scope:[renderBobInit] from main::@28
|
||||
@ -1106,10 +1107,10 @@ protoBobShiftDown::@3: scope:[protoBobShiftDown] from protoBobShiftDown::@1
|
||||
protoBobShiftDown::@return: scope:[protoBobShiftDown] from protoBobShiftDown::@3
|
||||
return
|
||||
to:@return
|
||||
@66: scope:[] from @60
|
||||
(byte**) renderBobCleanupNext#27 ← phi( @60/(byte**) renderBobCleanupNext#3 )
|
||||
@67: scope:[] from @61
|
||||
(byte**) renderBobCleanupNext#27 ← phi( @61/(byte**) renderBobCleanupNext#3 )
|
||||
(byte) bob_charset_next_id#6 ← (byte) 0
|
||||
to:@67
|
||||
to:@68
|
||||
|
||||
(byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset)
|
||||
charsetFindOrAddGlyph: scope:[charsetFindOrAddGlyph] from prepareBobs::@19 prepareBobs::@8
|
||||
@ -1233,12 +1234,12 @@ charsetFindOrAddGlyph::@22: scope:[charsetFindOrAddGlyph] from charsetFindOrAdd
|
||||
(byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#17
|
||||
(byte) charsetFindOrAddGlyph::return#4 ← (byte) charsetFindOrAddGlyph::glyph_id#5
|
||||
to:charsetFindOrAddGlyph::@return
|
||||
@67: scope:[] from @66
|
||||
(byte**) renderBobCleanupNext#23 ← phi( @66/(byte**) renderBobCleanupNext#27 )
|
||||
(byte) bob_charset_next_id#35 ← phi( @66/(byte) bob_charset_next_id#6 )
|
||||
@68: scope:[] from @67
|
||||
(byte**) renderBobCleanupNext#23 ← phi( @67/(byte**) renderBobCleanupNext#27 )
|
||||
(byte) bob_charset_next_id#35 ← phi( @67/(byte) bob_charset_next_id#6 )
|
||||
(byte*) progress_cursor#5 ← (byte*) 0
|
||||
(byte) progress_idx#5 ← (byte) 0
|
||||
to:@69
|
||||
to:@70
|
||||
|
||||
(void()) progress_init((byte*) progress_init::line)
|
||||
progress_init: scope:[progress_init] from prepareBobs
|
||||
@ -1281,31 +1282,31 @@ progress_inc::@return: scope:[progress_inc] from progress_inc::@1
|
||||
(byte*) progress_cursor#9 ← (byte*) progress_cursor#19
|
||||
return
|
||||
to:@return
|
||||
@69: scope:[] from @67
|
||||
(byte**) renderBobCleanupNext#19 ← phi( @67/(byte**) renderBobCleanupNext#23 )
|
||||
(byte) bob_charset_next_id#27 ← phi( @67/(byte) bob_charset_next_id#35 )
|
||||
(byte) progress_idx#27 ← phi( @67/(byte) progress_idx#5 )
|
||||
(byte*) progress_cursor#27 ← phi( @67/(byte*) progress_cursor#5 )
|
||||
@70: scope:[] from @68
|
||||
(byte**) renderBobCleanupNext#19 ← phi( @68/(byte**) renderBobCleanupNext#23 )
|
||||
(byte) bob_charset_next_id#27 ← phi( @68/(byte) bob_charset_next_id#35 )
|
||||
(byte) progress_idx#27 ← phi( @68/(byte) progress_idx#5 )
|
||||
(byte*) progress_cursor#27 ← phi( @68/(byte*) progress_cursor#5 )
|
||||
call main
|
||||
to:@70
|
||||
@70: scope:[] from @69
|
||||
(byte**) renderBobCleanupNext#15 ← phi( @69/(byte**) renderBobCleanupNext#2 )
|
||||
(byte) bob_charset_next_id#18 ← phi( @69/(byte) bob_charset_next_id#1 )
|
||||
(byte) progress_idx#21 ← phi( @69/(byte) progress_idx#1 )
|
||||
(byte*) progress_cursor#20 ← phi( @69/(byte*) progress_cursor#1 )
|
||||
to:@71
|
||||
@71: scope:[] from @70
|
||||
(byte**) renderBobCleanupNext#15 ← phi( @70/(byte**) renderBobCleanupNext#2 )
|
||||
(byte) bob_charset_next_id#18 ← phi( @70/(byte) bob_charset_next_id#1 )
|
||||
(byte) progress_idx#21 ← phi( @70/(byte) progress_idx#1 )
|
||||
(byte*) progress_cursor#20 ← phi( @70/(byte*) progress_cursor#1 )
|
||||
(byte*) progress_cursor#10 ← (byte*) progress_cursor#20
|
||||
(byte) progress_idx#11 ← (byte) progress_idx#21
|
||||
(byte) bob_charset_next_id#9 ← (byte) bob_charset_next_id#18
|
||||
(byte**) renderBobCleanupNext#8 ← (byte**) renderBobCleanupNext#15
|
||||
to:@end
|
||||
@end: scope:[] from @70
|
||||
@end: scope:[] from @71
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @60
|
||||
(label) @66
|
||||
(label) @61
|
||||
(label) @67
|
||||
(label) @69
|
||||
(label) @68
|
||||
(label) @70
|
||||
(label) @71
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BASIC_CHARSET = (byte*)(number) $1000
|
||||
@ -3369,11 +3370,11 @@ Added new block during phi lifting renderBobInit::@6(between renderBobInit::@3 a
|
||||
Added new block during phi lifting renderBobCleanup::@3(between renderBobCleanup::@1 and renderBobCleanup::@1)
|
||||
Added new block during phi lifting progress_inc::@3(between progress_inc and progress_inc::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @60
|
||||
Adding NOP phi() at start of @66
|
||||
Adding NOP phi() at start of @61
|
||||
Adding NOP phi() at start of @67
|
||||
Adding NOP phi() at start of @69
|
||||
Adding NOP phi() at start of @68
|
||||
Adding NOP phi() at start of @70
|
||||
Adding NOP phi() at start of @71
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@27
|
||||
@ -3497,10 +3498,10 @@ Coalesced [327] mulf_init::x_2#6 ← mulf_init::x_2#2
|
||||
Coalesced [328] mulf_init::sqr#8 ← mulf_init::sqr#4
|
||||
Coalesced (already) [329] mulf_init::x_2#7 ← mulf_init::x_2#3
|
||||
Coalesced down to 42 phi equivalence classes
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) @66
|
||||
Culled Empty Block (label) @61
|
||||
Culled Empty Block (label) @67
|
||||
Culled Empty Block (label) @70
|
||||
Culled Empty Block (label) @68
|
||||
Culled Empty Block (label) @71
|
||||
Culled Empty Block (label) main::@29
|
||||
Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return
|
||||
Culled Empty Block (label) main::@23
|
||||
@ -3531,7 +3532,7 @@ Culled Empty Block (label) protoBobShiftRight::@5
|
||||
Culled Empty Block (label) mulf_init::@3
|
||||
Culled Empty Block (label) mulf_init::@15
|
||||
Culled Empty Block (label) mulf_init::@17
|
||||
Renumbering block @69 to @1
|
||||
Renumbering block @70 to @1
|
||||
Renumbering block memset::@4 to memset::@1
|
||||
Renumbering block memset::@5 to memset::@2
|
||||
Renumbering block keyboard_key_pressed::@2 to keyboard_key_pressed::@1
|
||||
|
@ -43,10 +43,10 @@ Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) @15
|
||||
@ -85,25 +85,26 @@ Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) @48
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) @50
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) mulf_init::@5
|
||||
Culled Empty Block (label) mulf_init::@6
|
||||
Culled Empty Block (label) mulf_init::@8
|
||||
Culled Empty Block (label) mulf_init::@13
|
||||
Culled Empty Block (label) mulf_init::@14
|
||||
Culled Empty Block (label) mulf_init::@16
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) @52
|
||||
Culled Empty Block (label) mulf8u_prepared::@1
|
||||
Culled Empty Block (label) @53
|
||||
Culled Empty Block (label) mulf8u_prepared::@1
|
||||
Culled Empty Block (label) @54
|
||||
Culled Empty Block (label) @55
|
||||
Culled Empty Block (label) mulf8s_prepared::@5
|
||||
Culled Empty Block (label) @56
|
||||
Culled Empty Block (label) mulf8s_prepared::@5
|
||||
Culled Empty Block (label) @57
|
||||
Culled Empty Block (label) mulf8s::mulf8s_prepare1_@return
|
||||
Culled Empty Block (label) mulf8s::@1
|
||||
Culled Empty Block (label) @57
|
||||
Culled Empty Block (label) @58
|
||||
Culled Empty Block (label) @59
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@1
|
||||
Culled Empty Block (label) main::vicSelectGfxBank1_@return
|
||||
Culled Empty Block (label) main::toD0181_@1
|
||||
@ -124,9 +125,9 @@ Culled Empty Block (label) main::toD0182_@1
|
||||
Culled Empty Block (label) main::@19
|
||||
Culled Empty Block (label) main::@20
|
||||
Culled Empty Block (label) renderBobInit::@4
|
||||
Culled Empty Block (label) @61
|
||||
Culled Empty Block (label) @62
|
||||
Culled Empty Block (label) @63
|
||||
Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) prepareBobs::@17
|
||||
Culled Empty Block (label) prepareBobs::@3
|
||||
Culled Empty Block (label) prepareBobs::@18
|
||||
@ -137,7 +138,7 @@ Culled Empty Block (label) prepareBobs::@11
|
||||
Culled Empty Block (label) prepareBobs::@12
|
||||
Culled Empty Block (label) prepareBobs::@13
|
||||
Culled Empty Block (label) prepareBobs::@16
|
||||
Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) @65
|
||||
Culled Empty Block (label) shiftProtoBobRight::@9
|
||||
Culled Empty Block (label) shiftProtoBobRight::@3
|
||||
Culled Empty Block (label) shiftProtoBobRight::@10
|
||||
@ -145,7 +146,7 @@ Culled Empty Block (label) shiftProtoBobRight::@11
|
||||
Culled Empty Block (label) shiftProtoBobRight::@12
|
||||
Culled Empty Block (label) shiftProtoBobRight::@14
|
||||
Culled Empty Block (label) shiftProtoBobRight::@15
|
||||
Culled Empty Block (label) @65
|
||||
Culled Empty Block (label) @66
|
||||
Culled Empty Block (label) shiftProtoBobDown::@4
|
||||
Culled Empty Block (label) shiftProtoBobDown::@5
|
||||
Culled Empty Block (label) shiftProtoBobDown::@6
|
||||
@ -162,11 +163,11 @@ Culled Empty Block (label) bobCharsetFindOrAddGlyph::@23
|
||||
Culled Empty Block (label) bobCharsetFindOrAddGlyph::@24
|
||||
Culled Empty Block (label) bobCharsetFindOrAddGlyph::@25
|
||||
Culled Empty Block (label) bobCharsetFindOrAddGlyph::@26
|
||||
Culled Empty Block (label) @68
|
||||
Culled Empty Block (label) @69
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@60
|
||||
to:@61
|
||||
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
memset: scope:[memset] from main::@22
|
||||
@ -461,11 +462,11 @@ mulf8s::@return: scope:[mulf8s] from mulf8s::@4
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @69
|
||||
(byte**) renderBobCleanupNext#50 ← phi( @69/(byte**) renderBobCleanupNext#19 )
|
||||
(byte) bob_charset_next_id#28 ← phi( @69/(byte) bob_charset_next_id#27 )
|
||||
(byte) progress_idx#28 ← phi( @69/(byte) progress_idx#27 )
|
||||
(byte*) progress_cursor#28 ← phi( @69/(byte*) progress_cursor#27 )
|
||||
main: scope:[main] from @70
|
||||
(byte**) renderBobCleanupNext#50 ← phi( @70/(byte**) renderBobCleanupNext#19 )
|
||||
(byte) bob_charset_next_id#28 ← phi( @70/(byte) bob_charset_next_id#27 )
|
||||
(byte) progress_idx#28 ← phi( @70/(byte) progress_idx#27 )
|
||||
(byte*) progress_cursor#28 ← phi( @70/(byte*) progress_cursor#27 )
|
||||
call mulf_init
|
||||
to:main::@25
|
||||
main::@25: scope:[main] from main
|
||||
@ -835,9 +836,9 @@ main::@return: scope:[main] from main::@24
|
||||
(byte**) renderBobCleanupNext#2 ← (byte**) renderBobCleanupNext#11
|
||||
return
|
||||
to:@return
|
||||
@60: scope:[] from @begin
|
||||
@61: scope:[] from @begin
|
||||
(byte**) renderBobCleanupNext#3 ← (byte**) 0
|
||||
to:@66
|
||||
to:@67
|
||||
|
||||
(void()) renderBobInit()
|
||||
renderBobInit: scope:[renderBobInit] from main::@26
|
||||
@ -1204,10 +1205,10 @@ shiftProtoBobDown::@3: scope:[shiftProtoBobDown] from shiftProtoBobDown::@1
|
||||
shiftProtoBobDown::@return: scope:[shiftProtoBobDown] from shiftProtoBobDown::@3
|
||||
return
|
||||
to:@return
|
||||
@66: scope:[] from @60
|
||||
(byte**) renderBobCleanupNext#27 ← phi( @60/(byte**) renderBobCleanupNext#3 )
|
||||
@67: scope:[] from @61
|
||||
(byte**) renderBobCleanupNext#27 ← phi( @61/(byte**) renderBobCleanupNext#3 )
|
||||
(byte) bob_charset_next_id#6 ← (byte) 0
|
||||
to:@67
|
||||
to:@68
|
||||
|
||||
(byte()) bobCharsetFindOrAddGlyph((byte*) bobCharsetFindOrAddGlyph::bob_glyph)
|
||||
bobCharsetFindOrAddGlyph: scope:[bobCharsetFindOrAddGlyph] from prepareBobs::@19 prepareBobs::@8
|
||||
@ -1330,12 +1331,12 @@ bobCharsetFindOrAddGlyph::@22: scope:[bobCharsetFindOrAddGlyph] from bobCharset
|
||||
(byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#17
|
||||
(byte) bobCharsetFindOrAddGlyph::return#4 ← (byte) bobCharsetFindOrAddGlyph::glyph_id#5
|
||||
to:bobCharsetFindOrAddGlyph::@return
|
||||
@67: scope:[] from @66
|
||||
(byte**) renderBobCleanupNext#23 ← phi( @66/(byte**) renderBobCleanupNext#27 )
|
||||
(byte) bob_charset_next_id#35 ← phi( @66/(byte) bob_charset_next_id#6 )
|
||||
@68: scope:[] from @67
|
||||
(byte**) renderBobCleanupNext#23 ← phi( @67/(byte**) renderBobCleanupNext#27 )
|
||||
(byte) bob_charset_next_id#35 ← phi( @67/(byte) bob_charset_next_id#6 )
|
||||
(byte*) progress_cursor#5 ← (byte*) 0
|
||||
(byte) progress_idx#5 ← (byte) 0
|
||||
to:@69
|
||||
to:@70
|
||||
|
||||
(void()) progress_init((byte*) progress_init::line)
|
||||
progress_init: scope:[progress_init] from prepareBobs
|
||||
@ -1378,31 +1379,31 @@ progress_inc::@return: scope:[progress_inc] from progress_inc::@1
|
||||
(byte*) progress_cursor#9 ← (byte*) progress_cursor#19
|
||||
return
|
||||
to:@return
|
||||
@69: scope:[] from @67
|
||||
(byte**) renderBobCleanupNext#19 ← phi( @67/(byte**) renderBobCleanupNext#23 )
|
||||
(byte) bob_charset_next_id#27 ← phi( @67/(byte) bob_charset_next_id#35 )
|
||||
(byte) progress_idx#27 ← phi( @67/(byte) progress_idx#5 )
|
||||
(byte*) progress_cursor#27 ← phi( @67/(byte*) progress_cursor#5 )
|
||||
@70: scope:[] from @68
|
||||
(byte**) renderBobCleanupNext#19 ← phi( @68/(byte**) renderBobCleanupNext#23 )
|
||||
(byte) bob_charset_next_id#27 ← phi( @68/(byte) bob_charset_next_id#35 )
|
||||
(byte) progress_idx#27 ← phi( @68/(byte) progress_idx#5 )
|
||||
(byte*) progress_cursor#27 ← phi( @68/(byte*) progress_cursor#5 )
|
||||
call main
|
||||
to:@70
|
||||
@70: scope:[] from @69
|
||||
(byte**) renderBobCleanupNext#15 ← phi( @69/(byte**) renderBobCleanupNext#2 )
|
||||
(byte) bob_charset_next_id#18 ← phi( @69/(byte) bob_charset_next_id#1 )
|
||||
(byte) progress_idx#21 ← phi( @69/(byte) progress_idx#1 )
|
||||
(byte*) progress_cursor#20 ← phi( @69/(byte*) progress_cursor#1 )
|
||||
to:@71
|
||||
@71: scope:[] from @70
|
||||
(byte**) renderBobCleanupNext#15 ← phi( @70/(byte**) renderBobCleanupNext#2 )
|
||||
(byte) bob_charset_next_id#18 ← phi( @70/(byte) bob_charset_next_id#1 )
|
||||
(byte) progress_idx#21 ← phi( @70/(byte) progress_idx#1 )
|
||||
(byte*) progress_cursor#20 ← phi( @70/(byte*) progress_cursor#1 )
|
||||
(byte*) progress_cursor#10 ← (byte*) progress_cursor#20
|
||||
(byte) progress_idx#11 ← (byte) progress_idx#21
|
||||
(byte) bob_charset_next_id#9 ← (byte) bob_charset_next_id#18
|
||||
(byte**) renderBobCleanupNext#8 ← (byte**) renderBobCleanupNext#15
|
||||
to:@end
|
||||
@end: scope:[] from @70
|
||||
@end: scope:[] from @71
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @60
|
||||
(label) @66
|
||||
(label) @61
|
||||
(label) @67
|
||||
(label) @69
|
||||
(label) @68
|
||||
(label) @70
|
||||
(label) @71
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BOB_CHARSET = (byte*)(number) $2000
|
||||
@ -3579,11 +3580,11 @@ Added new block during phi lifting renderBobInit::@6(between renderBobInit::@3 a
|
||||
Added new block during phi lifting renderBobCleanup::@3(between renderBobCleanup::@1 and renderBobCleanup::@1)
|
||||
Added new block during phi lifting progress_inc::@3(between progress_inc and progress_inc::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @60
|
||||
Adding NOP phi() at start of @66
|
||||
Adding NOP phi() at start of @61
|
||||
Adding NOP phi() at start of @67
|
||||
Adding NOP phi() at start of @69
|
||||
Adding NOP phi() at start of @68
|
||||
Adding NOP phi() at start of @70
|
||||
Adding NOP phi() at start of @71
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@25
|
||||
@ -3710,10 +3711,10 @@ Coalesced [364] mulf_init::x_2#6 ← mulf_init::x_2#2
|
||||
Coalesced [365] mulf_init::sqr#8 ← mulf_init::sqr#4
|
||||
Coalesced (already) [366] mulf_init::x_2#7 ← mulf_init::x_2#3
|
||||
Coalesced down to 41 phi equivalence classes
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) @66
|
||||
Culled Empty Block (label) @61
|
||||
Culled Empty Block (label) @67
|
||||
Culled Empty Block (label) @70
|
||||
Culled Empty Block (label) @68
|
||||
Culled Empty Block (label) @71
|
||||
Culled Empty Block (label) main::@27
|
||||
Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return
|
||||
Culled Empty Block (label) main::@21
|
||||
@ -3746,7 +3747,7 @@ Culled Empty Block (label) shiftProtoBobRight::@5
|
||||
Culled Empty Block (label) mulf_init::@3
|
||||
Culled Empty Block (label) mulf_init::@15
|
||||
Culled Empty Block (label) mulf_init::@17
|
||||
Renumbering block @69 to @1
|
||||
Renumbering block @70 to @1
|
||||
Renumbering block memset::@4 to memset::@1
|
||||
Renumbering block memset::@5 to memset::@2
|
||||
Renumbering block keyboard_key_pressed::@2 to keyboard_key_pressed::@1
|
||||
|
@ -60,22 +60,23 @@ Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) @25
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @28
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @29
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @30
|
||||
Culled Empty Block (label) @31
|
||||
Culled Empty Block (label) @32
|
||||
Culled Empty Block (label) @33
|
||||
Culled Empty Block (label) @34
|
||||
Culled Empty Block (label) @35
|
||||
Culled Empty Block (label) @36
|
||||
Culled Empty Block (label) exit::@2
|
||||
Culled Empty Block (label) exit::@4
|
||||
Culled Empty Block (label) exit::@3
|
||||
Culled Empty Block (label) exit::@5
|
||||
Culled Empty Block (label) exit::@6
|
||||
Culled Empty Block (label) @36
|
||||
Culled Empty Block (label) @37
|
||||
Culled Empty Block (label) loop::@2
|
||||
Culled Empty Block (label) loop::@26
|
||||
Culled Empty Block (label) loop::@3
|
||||
@ -258,7 +259,7 @@ plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexSho
|
||||
@9: scope:[] from @4
|
||||
(byte*) PLEX_SCREEN_PTR#26 ← phi( @4/(byte*) PLEX_SCREEN_PTR#0 )
|
||||
(volatile byte) plex_free_next ← (byte) 0
|
||||
to:@37
|
||||
to:@38
|
||||
|
||||
(void()) mulf_init()
|
||||
mulf_init: scope:[mulf_init] from init::@4
|
||||
@ -553,8 +554,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @37
|
||||
(byte*) PLEX_SCREEN_PTR#17 ← phi( @37/(byte*) PLEX_SCREEN_PTR#21 )
|
||||
main: scope:[main] from @38
|
||||
(byte*) PLEX_SCREEN_PTR#17 ← phi( @38/(byte*) PLEX_SCREEN_PTR#21 )
|
||||
asm { sei }
|
||||
call init
|
||||
to:main::@1
|
||||
@ -824,19 +825,19 @@ loop::@34: scope:[loop] from loop::@21
|
||||
loop::@return: scope:[loop] from loop::@1 loop::@34
|
||||
return
|
||||
to:@return
|
||||
@37: scope:[] from @9
|
||||
@38: scope:[] from @9
|
||||
(byte*) PLEX_SCREEN_PTR#21 ← phi( @9/(byte*) PLEX_SCREEN_PTR#26 )
|
||||
call main
|
||||
to:@38
|
||||
@38: scope:[] from @37
|
||||
(byte*) PLEX_SCREEN_PTR#14 ← phi( @37/(byte*) PLEX_SCREEN_PTR#4 )
|
||||
to:@39
|
||||
@39: scope:[] from @38
|
||||
(byte*) PLEX_SCREEN_PTR#14 ← phi( @38/(byte*) PLEX_SCREEN_PTR#4 )
|
||||
(byte*) PLEX_SCREEN_PTR#7 ← (byte*) PLEX_SCREEN_PTR#14
|
||||
to:@end
|
||||
@end: scope:[] from @38
|
||||
@end: scope:[] from @39
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @37
|
||||
(label) @38
|
||||
(label) @39
|
||||
(label) @4
|
||||
(label) @9
|
||||
(label) @begin
|
||||
@ -2093,8 +2094,8 @@ Added new block during phi lifting loop::@35(between loop::@34 and loop::@1)
|
||||
Added new block during phi lifting loop::@36(between loop::@31 and loop::@6)
|
||||
Added new block during phi lifting loop::@37(between loop::@33 and loop::@14)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @37
|
||||
Adding NOP phi() at start of @38
|
||||
Adding NOP phi() at start of @39
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -2169,7 +2170,7 @@ Coalesced [262] mulf_init::sqr#8 ← mulf_init::sqr#4
|
||||
Coalesced (already) [263] mulf_init::x_2#7 ← mulf_init::x_2#3
|
||||
Coalesced [272] plexInit::i#3 ← plexInit::i#1
|
||||
Coalesced down to 24 phi equivalence classes
|
||||
Culled Empty Block (label) @38
|
||||
Culled Empty Block (label) @39
|
||||
Culled Empty Block (label) loop::@10
|
||||
Culled Empty Block (label) loop::plexFreeNextYpos1_@return
|
||||
Culled Empty Block (label) loop::@29
|
||||
@ -2195,7 +2196,7 @@ Culled Empty Block (label) plexInit::@3
|
||||
Culled Empty Block (label) plexInit::@4
|
||||
Renumbering block @4 to @1
|
||||
Renumbering block @9 to @2
|
||||
Renumbering block @37 to @3
|
||||
Renumbering block @38 to @3
|
||||
Renumbering block plexSort::@8 to plexSort::@7
|
||||
Renumbering block plexShowSprite::@4 to plexShowSprite::@3
|
||||
Renumbering block plexShowSprite::@6 to plexShowSprite::@4
|
||||
|
@ -39,65 +39,66 @@ Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) keyboard_event_scan::@22
|
||||
Culled Empty Block (label) keyboard_event_scan::@13
|
||||
Culled Empty Block (label) keyboard_event_scan::@15
|
||||
Culled Empty Block (label) keyboard_event_scan::@19
|
||||
Culled Empty Block (label) keyboard_event_scan::@4
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) keyboard_event_pressed::@1
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) keyboard_event_pressed::@1
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) keyboard_event_get::@4
|
||||
Culled Empty Block (label) keyboard_event_get::@2
|
||||
Culled Empty Block (label) keyboard_event_get::@5
|
||||
Culled Empty Block (label) keyboard_event_get::@6
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) render_init::vicSelectGfxBank1_toDd001_@1
|
||||
Culled Empty Block (label) render_init::vicSelectGfxBank1_@return
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) render_show::toD0181_@1
|
||||
Culled Empty Block (label) render_show::toD0182_@1
|
||||
Culled Empty Block (label) render_show::@4
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) render_score::@4
|
||||
Culled Empty Block (label) @17
|
||||
Culled Empty Block (label) render_score::@4
|
||||
Culled Empty Block (label) @18
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) render_screen_original::@3
|
||||
Culled Empty Block (label) render_screen_original::@5
|
||||
Culled Empty Block (label) render_screen_original::@8
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) render_playfield::@4
|
||||
Culled Empty Block (label) @20
|
||||
Culled Empty Block (label) render_playfield::@4
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) render_moving::@9
|
||||
Culled Empty Block (label) render_moving::@7
|
||||
Culled Empty Block (label) render_moving::@10
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @22
|
||||
Culled Empty Block (label) render_next::@4
|
||||
Culled Empty Block (label) render_next::@10
|
||||
Culled Empty Block (label) render_next::@12
|
||||
Culled Empty Block (label) sprites_init::@2
|
||||
Culled Empty Block (label) toSpritePtr1_@1
|
||||
Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) @25
|
||||
Culled Empty Block (label) sprites_irq::@14
|
||||
Culled Empty Block (label) sprites_irq::toSpritePtr1_@1
|
||||
Culled Empty Block (label) sprites_irq::@5
|
||||
Culled Empty Block (label) sprites_irq::@9
|
||||
Culled Empty Block (label) sprites_irq::@10
|
||||
Culled Empty Block (label) play_init::@4
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) play_movement::@3
|
||||
Culled Empty Block (label) play_movement::@4
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) @28
|
||||
Culled Empty Block (label) play_move_down::@13
|
||||
Culled Empty Block (label) play_move_down::@11
|
||||
Culled Empty Block (label) play_move_down::@16
|
||||
Culled Empty Block (label) play_move_down::@12
|
||||
Culled Empty Block (label) @28
|
||||
Culled Empty Block (label) @29
|
||||
Culled Empty Block (label) play_move_leftright::@2
|
||||
Culled Empty Block (label) play_move_leftright::@12
|
||||
Culled Empty Block (label) play_move_leftright::@7
|
||||
@ -105,40 +106,40 @@ Culled Empty Block (label) play_move_leftright::@8
|
||||
Culled Empty Block (label) play_move_leftright::@13
|
||||
Culled Empty Block (label) play_move_leftright::@10
|
||||
Culled Empty Block (label) play_move_leftright::@11
|
||||
Culled Empty Block (label) @29
|
||||
Culled Empty Block (label) @30
|
||||
Culled Empty Block (label) play_move_rotate::@8
|
||||
Culled Empty Block (label) play_move_rotate::@3
|
||||
Culled Empty Block (label) play_move_rotate::@9
|
||||
Culled Empty Block (label) play_move_rotate::@10
|
||||
Culled Empty Block (label) play_move_rotate::@12
|
||||
Culled Empty Block (label) play_move_rotate::@13
|
||||
Culled Empty Block (label) @30
|
||||
Culled Empty Block (label) @31
|
||||
Culled Empty Block (label) play_collision::@16
|
||||
Culled Empty Block (label) play_collision::@9
|
||||
Culled Empty Block (label) play_collision::@11
|
||||
Culled Empty Block (label) play_collision::@7
|
||||
Culled Empty Block (label) play_collision::@13
|
||||
Culled Empty Block (label) play_collision::@19
|
||||
Culled Empty Block (label) @31
|
||||
Culled Empty Block (label) play_lock_current::@6
|
||||
Culled Empty Block (label) @32
|
||||
Culled Empty Block (label) play_lock_current::@6
|
||||
Culled Empty Block (label) @33
|
||||
Culled Empty Block (label) play_spawn_current::@4
|
||||
Culled Empty Block (label) play_spawn_current::sid_rnd1_@1
|
||||
Culled Empty Block (label) play_spawn_current::@6
|
||||
Culled Empty Block (label) play_spawn_current::@7
|
||||
Culled Empty Block (label) play_spawn_current::@8
|
||||
Culled Empty Block (label) @33
|
||||
Culled Empty Block (label) @34
|
||||
Culled Empty Block (label) play_remove_lines::@8
|
||||
Culled Empty Block (label) play_remove_lines::@12
|
||||
Culled Empty Block (label) play_remove_lines::@13
|
||||
Culled Empty Block (label) play_remove_lines::@14
|
||||
Culled Empty Block (label) play_remove_lines::@15
|
||||
Culled Empty Block (label) @34
|
||||
Culled Empty Block (label) @35
|
||||
Culled Empty Block (label) play_update_score::@1
|
||||
Culled Empty Block (label) play_update_score::@4
|
||||
Culled Empty Block (label) @35
|
||||
Culled Empty Block (label) play_increase_level::@5
|
||||
Culled Empty Block (label) @36
|
||||
Culled Empty Block (label) play_increase_level::@5
|
||||
Culled Empty Block (label) @37
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@21
|
||||
Culled Empty Block (label) main::@3
|
||||
@ -158,7 +159,7 @@ Culled Empty Block (label) main::@24
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@8
|
||||
to:@9
|
||||
|
||||
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
|
||||
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@8
|
||||
@ -173,10 +174,10 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri
|
||||
(byte) keyboard_matrix_read::return#1 ← (byte) keyboard_matrix_read::return#3
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @begin
|
||||
@9: scope:[] from @begin
|
||||
(byte) keyboard_events_size#0 ← (byte) 0
|
||||
(byte) keyboard_modifiers#0 ← (byte) 0
|
||||
to:@13
|
||||
to:@14
|
||||
|
||||
(void()) keyboard_event_scan()
|
||||
keyboard_event_scan: scope:[keyboard_event_scan] from main::@35
|
||||
@ -436,9 +437,9 @@ sid_rnd_init: scope:[sid_rnd_init] from main
|
||||
sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init
|
||||
return
|
||||
to:@return
|
||||
@13: scope:[] from @8
|
||||
(byte) keyboard_modifiers#54 ← phi( @8/(byte) keyboard_modifiers#0 )
|
||||
(byte) keyboard_events_size#72 ← phi( @8/(byte) keyboard_events_size#0 )
|
||||
@14: scope:[] from @9
|
||||
(byte) keyboard_modifiers#54 ← phi( @9/(byte) keyboard_modifiers#0 )
|
||||
(byte) keyboard_events_size#72 ← phi( @9/(byte) keyboard_events_size#0 )
|
||||
(byte*) current_piece_gfx#0 ← (byte*) 0
|
||||
(byte) current_piece_char#0 ← (byte) 0
|
||||
(byte) current_xpos#0 ← (byte) 0
|
||||
@ -454,7 +455,7 @@ sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init
|
||||
kickasm(location (const nomodify byte*) PLAYFIELD_CHARSET) {{ .fill 8,$00 // Place a filled char at the start of the charset
|
||||
.import binary "playfield-screen.imap"
|
||||
}}
|
||||
to:@22
|
||||
to:@23
|
||||
|
||||
(void()) render_init()
|
||||
render_init: scope:[render_init] from main::@25
|
||||
@ -1064,19 +1065,19 @@ render_next::@11: scope:[render_next] from render_next::@8
|
||||
render_next::@return: scope:[render_next] from render_next::@11
|
||||
return
|
||||
to:@return
|
||||
@22: scope:[] from @13
|
||||
(byte) level_bcd#92 ← phi( @13/(byte) level_bcd#0 )
|
||||
(byte) level#99 ← phi( @13/(byte) level#0 )
|
||||
(word) lines_bcd#79 ← phi( @13/(word) lines_bcd#0 )
|
||||
(byte) keyboard_modifiers#51 ← phi( @13/(byte) keyboard_modifiers#54 )
|
||||
(byte) keyboard_events_size#68 ← phi( @13/(byte) keyboard_events_size#72 )
|
||||
(byte) game_over#83 ← phi( @13/(byte) game_over#0 )
|
||||
(byte) current_ypos#96 ← phi( @13/(byte) current_ypos#0 )
|
||||
(byte) current_xpos#117 ← phi( @13/(byte) current_xpos#0 )
|
||||
(byte*) current_piece_gfx#110 ← phi( @13/(byte*) current_piece_gfx#0 )
|
||||
(byte) current_piece_char#98 ← phi( @13/(byte) current_piece_char#0 )
|
||||
(byte) render_screen_render#60 ← phi( @13/(byte) render_screen_render#0 )
|
||||
(byte) render_screen_show#55 ← phi( @13/(byte) render_screen_show#0 )
|
||||
@23: scope:[] from @14
|
||||
(byte) level_bcd#92 ← phi( @14/(byte) level_bcd#0 )
|
||||
(byte) level#99 ← phi( @14/(byte) level#0 )
|
||||
(word) lines_bcd#79 ← phi( @14/(word) lines_bcd#0 )
|
||||
(byte) keyboard_modifiers#51 ← phi( @14/(byte) keyboard_modifiers#54 )
|
||||
(byte) keyboard_events_size#68 ← phi( @14/(byte) keyboard_events_size#72 )
|
||||
(byte) game_over#83 ← phi( @14/(byte) game_over#0 )
|
||||
(byte) current_ypos#96 ← phi( @14/(byte) current_ypos#0 )
|
||||
(byte) current_xpos#117 ← phi( @14/(byte) current_xpos#0 )
|
||||
(byte*) current_piece_gfx#110 ← phi( @14/(byte*) current_piece_gfx#0 )
|
||||
(byte) current_piece_char#98 ← phi( @14/(byte) current_piece_char#0 )
|
||||
(byte) render_screen_render#60 ← phi( @14/(byte) render_screen_render#0 )
|
||||
(byte) render_screen_show#55 ← phi( @14/(byte) render_screen_show#0 )
|
||||
kickasm(location (const nomodify byte*) PLAYFIELD_SPRITES) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
|
||||
// Put the sprites into memory
|
||||
.for(var sy=0;sy<10;sy++) {
|
||||
@ -1092,7 +1093,7 @@ render_next::@return: scope:[render_next] from render_next::@11
|
||||
}
|
||||
}
|
||||
}}
|
||||
to:@23
|
||||
to:@24
|
||||
|
||||
(void()) sprites_init()
|
||||
sprites_init: scope:[sprites_init] from main::@26
|
||||
@ -1119,37 +1120,37 @@ sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1
|
||||
sprites_init::@return: scope:[sprites_init] from sprites_init::@1
|
||||
return
|
||||
to:@return
|
||||
@23: scope:[] from @22
|
||||
(byte) level_bcd#85 ← phi( @22/(byte) level_bcd#92 )
|
||||
(byte) level#92 ← phi( @22/(byte) level#99 )
|
||||
(word) lines_bcd#73 ← phi( @22/(word) lines_bcd#79 )
|
||||
(byte) keyboard_modifiers#48 ← phi( @22/(byte) keyboard_modifiers#51 )
|
||||
(byte) keyboard_events_size#63 ← phi( @22/(byte) keyboard_events_size#68 )
|
||||
(byte) game_over#78 ← phi( @22/(byte) game_over#83 )
|
||||
(byte) current_ypos#93 ← phi( @22/(byte) current_ypos#96 )
|
||||
(byte) current_xpos#114 ← phi( @22/(byte) current_xpos#117 )
|
||||
(byte*) current_piece_gfx#105 ← phi( @22/(byte*) current_piece_gfx#110 )
|
||||
(byte) current_piece_char#92 ← phi( @22/(byte) current_piece_char#98 )
|
||||
(byte) render_screen_render#57 ← phi( @22/(byte) render_screen_render#60 )
|
||||
(byte) render_screen_show#52 ← phi( @22/(byte) render_screen_show#55 )
|
||||
@24: scope:[] from @23
|
||||
(byte) level_bcd#85 ← phi( @23/(byte) level_bcd#92 )
|
||||
(byte) level#92 ← phi( @23/(byte) level#99 )
|
||||
(word) lines_bcd#73 ← phi( @23/(word) lines_bcd#79 )
|
||||
(byte) keyboard_modifiers#48 ← phi( @23/(byte) keyboard_modifiers#51 )
|
||||
(byte) keyboard_events_size#63 ← phi( @23/(byte) keyboard_events_size#68 )
|
||||
(byte) game_over#78 ← phi( @23/(byte) game_over#83 )
|
||||
(byte) current_ypos#93 ← phi( @23/(byte) current_ypos#96 )
|
||||
(byte) current_xpos#114 ← phi( @23/(byte) current_xpos#117 )
|
||||
(byte*) current_piece_gfx#105 ← phi( @23/(byte*) current_piece_gfx#110 )
|
||||
(byte) current_piece_char#92 ← phi( @23/(byte) current_piece_char#98 )
|
||||
(byte) render_screen_render#57 ← phi( @23/(byte) render_screen_render#60 )
|
||||
(byte) render_screen_show#52 ← phi( @23/(byte) render_screen_show#55 )
|
||||
(volatile byte) irq_raster_next ← (const nomodify byte) IRQ_RASTER_FIRST
|
||||
(volatile byte) irq_sprite_ypos ← (byte)(const nomodify byte) SPRITES_FIRST_YPOS+(number) $15
|
||||
(byte*) toSpritePtr1_sprite#0 ← (const nomodify byte*) PLAYFIELD_SPRITES
|
||||
to:toSpritePtr1
|
||||
toSpritePtr1: scope:[] from @23
|
||||
(byte) level_bcd#78 ← phi( @23/(byte) level_bcd#85 )
|
||||
(byte) level#85 ← phi( @23/(byte) level#92 )
|
||||
(word) lines_bcd#68 ← phi( @23/(word) lines_bcd#73 )
|
||||
(byte) keyboard_modifiers#45 ← phi( @23/(byte) keyboard_modifiers#48 )
|
||||
(byte) keyboard_events_size#57 ← phi( @23/(byte) keyboard_events_size#63 )
|
||||
(byte) game_over#72 ← phi( @23/(byte) game_over#78 )
|
||||
(byte) current_ypos#86 ← phi( @23/(byte) current_ypos#93 )
|
||||
(byte) current_xpos#107 ← phi( @23/(byte) current_xpos#114 )
|
||||
(byte*) current_piece_gfx#98 ← phi( @23/(byte*) current_piece_gfx#105 )
|
||||
(byte) current_piece_char#86 ← phi( @23/(byte) current_piece_char#92 )
|
||||
(byte) render_screen_render#54 ← phi( @23/(byte) render_screen_render#57 )
|
||||
(byte) render_screen_show#48 ← phi( @23/(byte) render_screen_show#52 )
|
||||
(byte*) toSpritePtr1_sprite#1 ← phi( @23/(byte*) toSpritePtr1_sprite#0 )
|
||||
toSpritePtr1: scope:[] from @24
|
||||
(byte) level_bcd#78 ← phi( @24/(byte) level_bcd#85 )
|
||||
(byte) level#85 ← phi( @24/(byte) level#92 )
|
||||
(word) lines_bcd#68 ← phi( @24/(word) lines_bcd#73 )
|
||||
(byte) keyboard_modifiers#45 ← phi( @24/(byte) keyboard_modifiers#48 )
|
||||
(byte) keyboard_events_size#57 ← phi( @24/(byte) keyboard_events_size#63 )
|
||||
(byte) game_over#72 ← phi( @24/(byte) game_over#78 )
|
||||
(byte) current_ypos#86 ← phi( @24/(byte) current_ypos#93 )
|
||||
(byte) current_xpos#107 ← phi( @24/(byte) current_xpos#114 )
|
||||
(byte*) current_piece_gfx#98 ← phi( @24/(byte*) current_piece_gfx#105 )
|
||||
(byte) current_piece_char#86 ← phi( @24/(byte) current_piece_char#92 )
|
||||
(byte) render_screen_render#54 ← phi( @24/(byte) render_screen_render#57 )
|
||||
(byte) render_screen_show#48 ← phi( @24/(byte) render_screen_show#52 )
|
||||
(byte*) toSpritePtr1_sprite#1 ← phi( @24/(byte*) toSpritePtr1_sprite#0 )
|
||||
(word~) toSpritePtr1_$0 ← ((word)) (byte*) toSpritePtr1_sprite#1
|
||||
(number~) toSpritePtr1_$1 ← (word~) toSpritePtr1_$0 / (number) $40
|
||||
(byte~) toSpritePtr1_$2 ← ((byte)) (number~) toSpritePtr1_$1
|
||||
@ -1170,8 +1171,8 @@ toSpritePtr1_@return: scope:[] from toSpritePtr1
|
||||
(byte) render_screen_show#42 ← phi( toSpritePtr1/(byte) render_screen_show#48 )
|
||||
(byte) toSpritePtr1_return#2 ← phi( toSpritePtr1/(byte) toSpritePtr1_return#0 )
|
||||
(byte) toSpritePtr1_return#1 ← (byte) toSpritePtr1_return#2
|
||||
to:@38
|
||||
@38: scope:[] from toSpritePtr1_@return
|
||||
to:@39
|
||||
@39: scope:[] from toSpritePtr1_@return
|
||||
(byte) level_bcd#56 ← phi( toSpritePtr1_@return/(byte) level_bcd#68 )
|
||||
(byte) level#58 ← phi( toSpritePtr1_@return/(byte) level#72 )
|
||||
(word) lines_bcd#46 ← phi( toSpritePtr1_@return/(word) lines_bcd#58 )
|
||||
@ -1189,7 +1190,7 @@ toSpritePtr1_@return: scope:[] from toSpritePtr1
|
||||
(number~) $1 ← (byte~) $0 + (number) 3
|
||||
(volatile byte) irq_sprite_ptr ← (number~) $1
|
||||
(volatile byte) irq_cnt ← (byte) 0
|
||||
to:@25
|
||||
to:@26
|
||||
|
||||
(void()) sprites_irq_init()
|
||||
sprites_irq_init: scope:[sprites_irq_init] from main::@27
|
||||
@ -1295,25 +1296,25 @@ sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@15 sprites_irq::@4 spri
|
||||
sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6
|
||||
return
|
||||
to:@return
|
||||
@25: scope:[] from @38
|
||||
(byte) level_bcd#54 ← phi( @38/(byte) level_bcd#56 )
|
||||
(byte) level#55 ← phi( @38/(byte) level#58 )
|
||||
(word) lines_bcd#44 ← phi( @38/(word) lines_bcd#46 )
|
||||
(byte) keyboard_modifiers#32 ← phi( @38/(byte) keyboard_modifiers#33 )
|
||||
(byte) keyboard_events_size#36 ← phi( @38/(byte) keyboard_events_size#40 )
|
||||
(byte) game_over#45 ← phi( @38/(byte) game_over#46 )
|
||||
(byte) current_ypos#64 ← phi( @38/(byte) current_ypos#65 )
|
||||
(byte) current_xpos#75 ← phi( @38/(byte) current_xpos#80 )
|
||||
(byte*) current_piece_gfx#63 ← phi( @38/(byte*) current_piece_gfx#66 )
|
||||
(byte) current_piece_char#51 ← phi( @38/(byte) current_piece_char#53 )
|
||||
(byte) render_screen_render#40 ← phi( @38/(byte) render_screen_render#43 )
|
||||
(byte) render_screen_show#32 ← phi( @38/(byte) render_screen_show#35 )
|
||||
@26: scope:[] from @39
|
||||
(byte) level_bcd#54 ← phi( @39/(byte) level_bcd#56 )
|
||||
(byte) level#55 ← phi( @39/(byte) level#58 )
|
||||
(word) lines_bcd#44 ← phi( @39/(word) lines_bcd#46 )
|
||||
(byte) keyboard_modifiers#32 ← phi( @39/(byte) keyboard_modifiers#33 )
|
||||
(byte) keyboard_events_size#36 ← phi( @39/(byte) keyboard_events_size#40 )
|
||||
(byte) game_over#45 ← phi( @39/(byte) game_over#46 )
|
||||
(byte) current_ypos#64 ← phi( @39/(byte) current_ypos#65 )
|
||||
(byte) current_xpos#75 ← phi( @39/(byte) current_xpos#80 )
|
||||
(byte*) current_piece_gfx#63 ← phi( @39/(byte*) current_piece_gfx#66 )
|
||||
(byte) current_piece_char#51 ← phi( @39/(byte) current_piece_char#53 )
|
||||
(byte) render_screen_render#40 ← phi( @39/(byte) render_screen_render#43 )
|
||||
(byte) render_screen_show#32 ← phi( @39/(byte) render_screen_show#35 )
|
||||
(byte) next_piece_idx#0 ← (byte) 0
|
||||
(byte*) current_piece#0 ← (byte*)(number) 0
|
||||
(byte) current_orientation#0 ← (byte) 0
|
||||
(byte) current_movedown_slow#0 ← (byte) $30
|
||||
(byte) current_movedown_counter#0 ← (byte) 0
|
||||
to:@37
|
||||
to:@38
|
||||
|
||||
(void()) play_init()
|
||||
play_init: scope:[play_init] from main::@28
|
||||
@ -2659,24 +2660,24 @@ play_increase_level::@return: scope:[play_increase_level] from play_increase_le
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @37
|
||||
(byte) level_bcd#99 ← phi( @37/(byte) level_bcd#41 )
|
||||
(word) lines_bcd#86 ← phi( @37/(word) lines_bcd#32 )
|
||||
(byte) current_movedown_counter#57 ← phi( @37/(byte) current_movedown_counter#26 )
|
||||
(byte) keyboard_modifiers#59 ← phi( @37/(byte) keyboard_modifiers#24 )
|
||||
(byte) keyboard_events_size#77 ← phi( @37/(byte) keyboard_events_size#28 )
|
||||
(byte) level#100 ← phi( @37/(byte) level#41 )
|
||||
(byte) game_over#81 ← phi( @37/(byte) game_over#34 )
|
||||
(byte) current_ypos#94 ← phi( @37/(byte) current_ypos#49 )
|
||||
(byte) current_xpos#115 ← phi( @37/(byte) current_xpos#58 )
|
||||
(byte*) current_piece_gfx#108 ← phi( @37/(byte*) current_piece_gfx#45 )
|
||||
(byte) current_orientation#91 ← phi( @37/(byte) current_orientation#49 )
|
||||
(byte) current_piece_char#95 ← phi( @37/(byte) current_piece_char#36 )
|
||||
(byte*) current_piece#87 ← phi( @37/(byte*) current_piece#39 )
|
||||
(byte) next_piece_idx#74 ← phi( @37/(byte) next_piece_idx#35 )
|
||||
(byte) current_movedown_slow#79 ← phi( @37/(byte) current_movedown_slow#46 )
|
||||
(byte) render_screen_render#35 ← phi( @37/(byte) render_screen_render#29 )
|
||||
(byte) render_screen_show#27 ← phi( @37/(byte) render_screen_show#24 )
|
||||
main: scope:[main] from @38
|
||||
(byte) level_bcd#99 ← phi( @38/(byte) level_bcd#41 )
|
||||
(word) lines_bcd#86 ← phi( @38/(word) lines_bcd#32 )
|
||||
(byte) current_movedown_counter#57 ← phi( @38/(byte) current_movedown_counter#26 )
|
||||
(byte) keyboard_modifiers#59 ← phi( @38/(byte) keyboard_modifiers#24 )
|
||||
(byte) keyboard_events_size#77 ← phi( @38/(byte) keyboard_events_size#28 )
|
||||
(byte) level#100 ← phi( @38/(byte) level#41 )
|
||||
(byte) game_over#81 ← phi( @38/(byte) game_over#34 )
|
||||
(byte) current_ypos#94 ← phi( @38/(byte) current_ypos#49 )
|
||||
(byte) current_xpos#115 ← phi( @38/(byte) current_xpos#58 )
|
||||
(byte*) current_piece_gfx#108 ← phi( @38/(byte*) current_piece_gfx#45 )
|
||||
(byte) current_orientation#91 ← phi( @38/(byte) current_orientation#49 )
|
||||
(byte) current_piece_char#95 ← phi( @38/(byte) current_piece_char#36 )
|
||||
(byte*) current_piece#87 ← phi( @38/(byte*) current_piece#39 )
|
||||
(byte) next_piece_idx#74 ← phi( @38/(byte) next_piece_idx#35 )
|
||||
(byte) current_movedown_slow#79 ← phi( @38/(byte) current_movedown_slow#46 )
|
||||
(byte) render_screen_render#35 ← phi( @38/(byte) render_screen_render#29 )
|
||||
(byte) render_screen_show#27 ← phi( @38/(byte) render_screen_show#24 )
|
||||
call sid_rnd_init
|
||||
to:main::@25
|
||||
main::@25: scope:[main] from main
|
||||
@ -3309,44 +3310,44 @@ main::@return: scope:[main] from main::@1
|
||||
(byte) level_bcd#11 ← (byte) level_bcd#24
|
||||
return
|
||||
to:@return
|
||||
@37: scope:[] from @25
|
||||
(byte) level_bcd#41 ← phi( @25/(byte) level_bcd#54 )
|
||||
(byte) level#41 ← phi( @25/(byte) level#55 )
|
||||
(word) lines_bcd#32 ← phi( @25/(word) lines_bcd#44 )
|
||||
(byte) current_movedown_counter#26 ← phi( @25/(byte) current_movedown_counter#0 )
|
||||
(byte) keyboard_modifiers#24 ← phi( @25/(byte) keyboard_modifiers#32 )
|
||||
(byte) keyboard_events_size#28 ← phi( @25/(byte) keyboard_events_size#36 )
|
||||
(byte) next_piece_idx#35 ← phi( @25/(byte) next_piece_idx#0 )
|
||||
(byte) game_over#34 ← phi( @25/(byte) game_over#45 )
|
||||
(byte) current_ypos#49 ← phi( @25/(byte) current_ypos#64 )
|
||||
(byte) current_xpos#58 ← phi( @25/(byte) current_xpos#75 )
|
||||
(byte*) current_piece_gfx#45 ← phi( @25/(byte*) current_piece_gfx#63 )
|
||||
(byte) current_orientation#49 ← phi( @25/(byte) current_orientation#0 )
|
||||
(byte) current_piece_char#36 ← phi( @25/(byte) current_piece_char#51 )
|
||||
(byte*) current_piece#39 ← phi( @25/(byte*) current_piece#0 )
|
||||
(byte) current_movedown_slow#46 ← phi( @25/(byte) current_movedown_slow#0 )
|
||||
(byte) render_screen_render#29 ← phi( @25/(byte) render_screen_render#40 )
|
||||
(byte) render_screen_show#24 ← phi( @25/(byte) render_screen_show#32 )
|
||||
@38: scope:[] from @26
|
||||
(byte) level_bcd#41 ← phi( @26/(byte) level_bcd#54 )
|
||||
(byte) level#41 ← phi( @26/(byte) level#55 )
|
||||
(word) lines_bcd#32 ← phi( @26/(word) lines_bcd#44 )
|
||||
(byte) current_movedown_counter#26 ← phi( @26/(byte) current_movedown_counter#0 )
|
||||
(byte) keyboard_modifiers#24 ← phi( @26/(byte) keyboard_modifiers#32 )
|
||||
(byte) keyboard_events_size#28 ← phi( @26/(byte) keyboard_events_size#36 )
|
||||
(byte) next_piece_idx#35 ← phi( @26/(byte) next_piece_idx#0 )
|
||||
(byte) game_over#34 ← phi( @26/(byte) game_over#45 )
|
||||
(byte) current_ypos#49 ← phi( @26/(byte) current_ypos#64 )
|
||||
(byte) current_xpos#58 ← phi( @26/(byte) current_xpos#75 )
|
||||
(byte*) current_piece_gfx#45 ← phi( @26/(byte*) current_piece_gfx#63 )
|
||||
(byte) current_orientation#49 ← phi( @26/(byte) current_orientation#0 )
|
||||
(byte) current_piece_char#36 ← phi( @26/(byte) current_piece_char#51 )
|
||||
(byte*) current_piece#39 ← phi( @26/(byte*) current_piece#0 )
|
||||
(byte) current_movedown_slow#46 ← phi( @26/(byte) current_movedown_slow#0 )
|
||||
(byte) render_screen_render#29 ← phi( @26/(byte) render_screen_render#40 )
|
||||
(byte) render_screen_show#24 ← phi( @26/(byte) render_screen_show#32 )
|
||||
call main
|
||||
to:@39
|
||||
@39: scope:[] from @37
|
||||
(byte) level_bcd#25 ← phi( @37/(byte) level_bcd#11 )
|
||||
(byte) level#25 ← phi( @37/(byte) level#10 )
|
||||
(word) lines_bcd#20 ← phi( @37/(word) lines_bcd#8 )
|
||||
(byte) current_movedown_counter#17 ← phi( @37/(byte) current_movedown_counter#7 )
|
||||
(byte) keyboard_modifiers#17 ← phi( @37/(byte) keyboard_modifiers#8 )
|
||||
(byte) keyboard_events_size#20 ← phi( @37/(byte) keyboard_events_size#8 )
|
||||
(byte) next_piece_idx#23 ← phi( @37/(byte) next_piece_idx#10 )
|
||||
(byte) game_over#22 ← phi( @37/(byte) game_over#10 )
|
||||
(byte) current_ypos#29 ← phi( @37/(byte) current_ypos#11 )
|
||||
(byte) current_xpos#35 ← phi( @37/(byte) current_xpos#14 )
|
||||
(byte*) current_piece_gfx#28 ← phi( @37/(byte*) current_piece_gfx#13 )
|
||||
(byte) current_orientation#31 ← phi( @37/(byte) current_orientation#13 )
|
||||
(byte) current_piece_char#23 ← phi( @37/(byte) current_piece_char#10 )
|
||||
(byte*) current_piece#23 ← phi( @37/(byte*) current_piece#10 )
|
||||
(byte) current_movedown_slow#28 ← phi( @37/(byte) current_movedown_slow#14 )
|
||||
(byte) render_screen_render#19 ← phi( @37/(byte) render_screen_render#7 )
|
||||
(byte) render_screen_show#17 ← phi( @37/(byte) render_screen_show#7 )
|
||||
to:@40
|
||||
@40: scope:[] from @38
|
||||
(byte) level_bcd#25 ← phi( @38/(byte) level_bcd#11 )
|
||||
(byte) level#25 ← phi( @38/(byte) level#10 )
|
||||
(word) lines_bcd#20 ← phi( @38/(word) lines_bcd#8 )
|
||||
(byte) current_movedown_counter#17 ← phi( @38/(byte) current_movedown_counter#7 )
|
||||
(byte) keyboard_modifiers#17 ← phi( @38/(byte) keyboard_modifiers#8 )
|
||||
(byte) keyboard_events_size#20 ← phi( @38/(byte) keyboard_events_size#8 )
|
||||
(byte) next_piece_idx#23 ← phi( @38/(byte) next_piece_idx#10 )
|
||||
(byte) game_over#22 ← phi( @38/(byte) game_over#10 )
|
||||
(byte) current_ypos#29 ← phi( @38/(byte) current_ypos#11 )
|
||||
(byte) current_xpos#35 ← phi( @38/(byte) current_xpos#14 )
|
||||
(byte*) current_piece_gfx#28 ← phi( @38/(byte*) current_piece_gfx#13 )
|
||||
(byte) current_orientation#31 ← phi( @38/(byte) current_orientation#13 )
|
||||
(byte) current_piece_char#23 ← phi( @38/(byte) current_piece_char#10 )
|
||||
(byte*) current_piece#23 ← phi( @38/(byte*) current_piece#10 )
|
||||
(byte) current_movedown_slow#28 ← phi( @38/(byte) current_movedown_slow#14 )
|
||||
(byte) render_screen_render#19 ← phi( @38/(byte) render_screen_render#7 )
|
||||
(byte) render_screen_show#17 ← phi( @38/(byte) render_screen_show#7 )
|
||||
(byte) render_screen_show#8 ← (byte) render_screen_show#17
|
||||
(byte) render_screen_render#8 ← (byte) render_screen_render#19
|
||||
(byte) current_movedown_slow#15 ← (byte) current_movedown_slow#28
|
||||
@ -3365,19 +3366,19 @@ main::@return: scope:[main] from main::@1
|
||||
(byte) level#11 ← (byte) level#25
|
||||
(byte) level_bcd#12 ← (byte) level_bcd#25
|
||||
to:@end
|
||||
@end: scope:[] from @39
|
||||
@end: scope:[] from @40
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(byte~) $0
|
||||
(number~) $1
|
||||
(label) @13
|
||||
(label) @22
|
||||
(label) @14
|
||||
(label) @23
|
||||
(label) @25
|
||||
(label) @37
|
||||
(label) @24
|
||||
(label) @26
|
||||
(label) @38
|
||||
(label) @39
|
||||
(label) @8
|
||||
(label) @40
|
||||
(label) @9
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL1 = (byte*)(number) $d021
|
||||
@ -8577,12 +8578,12 @@ Added new block during phi lifting play_increase_level::@9(between play_increase
|
||||
Added new block during phi lifting play_increase_level::@10(between play_increase_level::@7 and play_increase_level::@7)
|
||||
Added new block during phi lifting main::@44(between main::@19 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @8
|
||||
Adding NOP phi() at start of @9
|
||||
Adding NOP phi() at start of toSpritePtr1
|
||||
Adding NOP phi() at start of toSpritePtr1_@return
|
||||
Adding NOP phi() at start of @25
|
||||
Adding NOP phi() at start of @37
|
||||
Adding NOP phi() at start of @39
|
||||
Adding NOP phi() at start of @26
|
||||
Adding NOP phi() at start of @38
|
||||
Adding NOP phi() at start of @40
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@26
|
||||
@ -8949,10 +8950,10 @@ Coalesced (already) [837] render_screen_original::screen#14 ← render_screen_or
|
||||
Coalesced (already) [838] render_screen_original::cols#11 ← render_screen_original::cols#1
|
||||
Coalesced [839] render_screen_original::x#7 ← render_screen_original::x#1
|
||||
Coalesced down to 93 phi equivalence classes
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) toSpritePtr1_@return
|
||||
Culled Empty Block (label) @25
|
||||
Culled Empty Block (label) @39
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @40
|
||||
Culled Empty Block (label) main::@12
|
||||
Culled Empty Block (label) main::@43
|
||||
Culled Empty Block (label) main::@44
|
||||
@ -9021,11 +9022,11 @@ Culled Empty Block (label) render_screen_original::@14
|
||||
Culled Empty Block (label) render_screen_original::@12
|
||||
Culled Empty Block (label) render_screen_original::@10
|
||||
Culled Empty Block (label) sprites_irq::toSpritePtr1_@return
|
||||
Renumbering block @13 to @1
|
||||
Renumbering block @22 to @2
|
||||
Renumbering block @23 to @3
|
||||
Renumbering block @37 to @4
|
||||
Renumbering block @38 to @5
|
||||
Renumbering block @14 to @1
|
||||
Renumbering block @23 to @2
|
||||
Renumbering block @24 to @3
|
||||
Renumbering block @38 to @4
|
||||
Renumbering block @39 to @5
|
||||
Renumbering block keyboard_event_scan::@5 to keyboard_event_scan::@4
|
||||
Renumbering block keyboard_event_scan::@6 to keyboard_event_scan::@5
|
||||
Renumbering block keyboard_event_scan::@7 to keyboard_event_scan::@6
|
||||
|
@ -6,30 +6,31 @@ Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) keyboard_get_keycode::@1
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) keyboard_get_keycode::@1
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@28
|
||||
Culled Empty Block (label) main::@22
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) print_str_at::@4
|
||||
Culled Empty Block (label) print_str_at::@3
|
||||
Culled Empty Block (label) print_str_at::@5
|
||||
Culled Empty Block (label) print_str_at::@6
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@14
|
||||
to:@15
|
||||
|
||||
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
|
||||
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
|
||||
@ -81,7 +82,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @14
|
||||
main: scope:[main] from @15
|
||||
(byte*) main::sc#0 ← (const byte*) SCREEN
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
@ -424,16 +425,16 @@ plot_chargen::@8: scope:[plot_chargen] from plot_chargen::@7
|
||||
plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8
|
||||
return
|
||||
to:@return
|
||||
@14: scope:[] from @begin
|
||||
@15: scope:[] from @begin
|
||||
call main
|
||||
to:@15
|
||||
@15: scope:[] from @14
|
||||
to:@16
|
||||
@16: scope:[] from @15
|
||||
to:@end
|
||||
@end: scope:[] from @15
|
||||
@end: scope:[] from @16
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @14
|
||||
(label) @15
|
||||
(label) @16
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) CHARGEN = (byte*)(number) $d000
|
||||
@ -1207,8 +1208,8 @@ Added new block during phi lifting plot_chargen::@9(between plot_chargen and plo
|
||||
Added new block during phi lifting plot_chargen::@10(between plot_chargen::@7 and plot_chargen::@3)
|
||||
Added new block during phi lifting plot_chargen::@11(between plot_chargen::@5 and plot_chargen::@4)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @14
|
||||
Adding NOP phi() at start of @15
|
||||
Adding NOP phi() at start of @16
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
@ -1260,7 +1261,7 @@ Coalesced [147] print_str_at::at#8 ← print_str_at::at#7
|
||||
Coalesced [154] print_str_at::str#9 ← print_str_at::str#4
|
||||
Coalesced [155] print_str_at::at#9 ← print_str_at::at#4
|
||||
Coalesced down to 18 phi equivalence classes
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) main::@32
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@23
|
||||
@ -1275,7 +1276,7 @@ Culled Empty Block (label) main::@42
|
||||
Culled Empty Block (label) plot_chargen::@10
|
||||
Culled Empty Block (label) plot_chargen::@11
|
||||
Culled Empty Block (label) plot_chargen::@9
|
||||
Renumbering block @14 to @1
|
||||
Renumbering block @15 to @1
|
||||
Renumbering block keyboard_key_pressed::@2 to keyboard_key_pressed::@1
|
||||
Renumbering block main::@7 to main::@4
|
||||
Renumbering block main::@9 to main::@5
|
||||
|
639
src/test/ref/examples/conio/nacht-screen.asm
Normal file
639
src/test/ref/examples/conio/nacht-screen.asm
Normal file
@ -0,0 +1,639 @@
|
||||
// Show a nice screen using conio.h
|
||||
// From CC65 sample "Eine kleine Nachtmusik" by Ullrich von Bassewitz
|
||||
// https://github.com/cc65/cc65/blob/master/samples/nachtm.c
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(__bbegin)
|
||||
.pc = $80d "Program"
|
||||
// The horizontal line character
|
||||
.const CH_HLINE = $40
|
||||
// The vertical line character
|
||||
.const CH_VLINE = $5d
|
||||
// The upper left corner character
|
||||
.const CH_ULCORNER = $70
|
||||
// The upper right corner character
|
||||
.const CH_URCORNER = $6e
|
||||
// The lower left corner character
|
||||
.const CH_LLCORNER = $6d
|
||||
// The lower right corner character
|
||||
.const CH_LRCORNER = $7d
|
||||
// The left T character
|
||||
.const CH_LTEE = $6b
|
||||
// The right T character
|
||||
.const CH_RTEE = $73
|
||||
// The text screen address
|
||||
.label CONIO_SCREEN_TEXT = $400
|
||||
// The color screen address
|
||||
.label CONIO_SCREEN_COLORS = $d800
|
||||
// The background color register address
|
||||
.label CONIO_BGCOLOR = $d021
|
||||
// The border color register address
|
||||
.label CONIO_BORDERCOLOR = $d020
|
||||
// CIA#1 Port A: keyboard matrix columns and joystick #2
|
||||
.label CONIO_CIA1_PORT_A = $dc00
|
||||
// CIA#1 Port B: keyboard matrix rows and joystick #1.
|
||||
.label CONIO_CIA1_PORT_B = $dc01
|
||||
// The screen width
|
||||
.const CONIO_WIDTH = $28
|
||||
// The screen height
|
||||
.const CONIO_HEIGHT = $19
|
||||
.const COLOR_GRAY3 = $f
|
||||
.const COLOR_BLACK = 0
|
||||
.label VIC_MEMORY = $d018
|
||||
.label XSize = $f
|
||||
.label YSize = $10
|
||||
// The current cursor x-position
|
||||
.label conio_cursor_x = $a
|
||||
// The current cursor y-position
|
||||
.label conio_cursor_y = 5
|
||||
// The current cursor address
|
||||
.label conio_cursor_text = 6
|
||||
// The current cursor address
|
||||
.label conio_cursor_color = 8
|
||||
__bbegin:
|
||||
// XSize
|
||||
lda #0
|
||||
sta.z XSize
|
||||
// YSize
|
||||
sta.z YSize
|
||||
jsr main
|
||||
rts
|
||||
main: {
|
||||
// *VIC_MEMORY = 0x17
|
||||
lda #$17
|
||||
sta VIC_MEMORY
|
||||
// screensize(&XSize, &YSize)
|
||||
jsr screensize
|
||||
// MakeNiceScreen()
|
||||
jsr MakeNiceScreen
|
||||
__b1:
|
||||
// kbhit()
|
||||
jsr kbhit
|
||||
// while(!kbhit())
|
||||
cmp #0
|
||||
beq __b1
|
||||
// clrscr ()
|
||||
jsr clrscr
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
|
||||
clrscr: {
|
||||
.label line_text = 3
|
||||
.label line_cols = $b
|
||||
lda #<CONIO_SCREEN_COLORS
|
||||
sta.z line_cols
|
||||
lda #>CONIO_SCREEN_COLORS
|
||||
sta.z line_cols+1
|
||||
lda #<CONIO_SCREEN_TEXT
|
||||
sta.z line_text
|
||||
lda #>CONIO_SCREEN_TEXT
|
||||
sta.z line_text+1
|
||||
ldx #0
|
||||
__b1:
|
||||
// for( char l=0;l<CONIO_HEIGHT; l++ )
|
||||
cpx #CONIO_HEIGHT
|
||||
bcc __b4
|
||||
// }
|
||||
rts
|
||||
__b4:
|
||||
ldy #0
|
||||
__b2:
|
||||
// for( char c=0;c<CONIO_WIDTH; c++ )
|
||||
cpy #CONIO_WIDTH
|
||||
bcc __b3
|
||||
// line_text += CONIO_WIDTH
|
||||
lda #CONIO_WIDTH
|
||||
clc
|
||||
adc.z line_text
|
||||
sta.z line_text
|
||||
bcc !+
|
||||
inc.z line_text+1
|
||||
!:
|
||||
// line_cols += CONIO_WIDTH
|
||||
lda #CONIO_WIDTH
|
||||
clc
|
||||
adc.z line_cols
|
||||
sta.z line_cols
|
||||
bcc !+
|
||||
inc.z line_cols+1
|
||||
!:
|
||||
// for( char l=0;l<CONIO_HEIGHT; l++ )
|
||||
inx
|
||||
jmp __b1
|
||||
__b3:
|
||||
// line_text[c] = ' '
|
||||
lda #' '
|
||||
sta (line_text),y
|
||||
// line_cols[c] = conio_textcolor
|
||||
lda #COLOR_GRAY3
|
||||
sta (line_cols),y
|
||||
// for( char c=0;c<CONIO_WIDTH; c++ )
|
||||
iny
|
||||
jmp __b2
|
||||
}
|
||||
// Return true if there's a key waiting, return false if not
|
||||
kbhit: {
|
||||
// *CONIO_CIA1_PORT_A = 0
|
||||
lda #0
|
||||
sta CONIO_CIA1_PORT_A
|
||||
// ~*CONIO_CIA1_PORT_B
|
||||
lda CONIO_CIA1_PORT_B
|
||||
eor #$ff
|
||||
// }
|
||||
rts
|
||||
}
|
||||
MakeNiceScreen: {
|
||||
.label __21 = $b
|
||||
.label T = 3
|
||||
.label I = 2
|
||||
// textcolor (COLOR_GRAY3)
|
||||
/* Clear the screen hide the cursor, set colors */
|
||||
jsr textcolor
|
||||
// bordercolor (COLOR_BLACK)
|
||||
jsr bordercolor
|
||||
// bgcolor (COLOR_BLACK)
|
||||
jsr bgcolor
|
||||
// clrscr ()
|
||||
jsr clrscr
|
||||
// cursor (0)
|
||||
jsr cursor
|
||||
// cputcxy (0, 0, CH_ULCORNER)
|
||||
/* Top line */
|
||||
ldy #CH_ULCORNER
|
||||
lda #0
|
||||
jsr cputcxy
|
||||
// chline (XSize - 2)
|
||||
lda.z XSize
|
||||
sec
|
||||
sbc #2
|
||||
sta.z chline.length
|
||||
jsr chline
|
||||
// cputc (CH_URCORNER)
|
||||
lda #CH_URCORNER
|
||||
jsr cputc
|
||||
// cvlinexy (0, 1, 23)
|
||||
/* Left line */
|
||||
ldx #0
|
||||
jsr cvlinexy
|
||||
// cputc (CH_LLCORNER)
|
||||
/* Bottom line */
|
||||
lda #CH_LLCORNER
|
||||
jsr cputc
|
||||
// chline (XSize - 2)
|
||||
lda.z XSize
|
||||
sec
|
||||
sbc #2
|
||||
sta.z chline.length
|
||||
jsr chline
|
||||
// cputc (CH_LRCORNER)
|
||||
lda #CH_LRCORNER
|
||||
jsr cputc
|
||||
// cvlinexy (XSize - 1, 1, 23)
|
||||
ldx.z XSize
|
||||
dex
|
||||
/* Right line */
|
||||
jsr cvlinexy
|
||||
// MakeTeeLine (7)
|
||||
/* Several divider lines */
|
||||
lda #7
|
||||
jsr MakeTeeLine
|
||||
// MakeTeeLine (22)
|
||||
lda #$16
|
||||
jsr MakeTeeLine
|
||||
lda #<Text
|
||||
sta.z T
|
||||
lda #>Text
|
||||
sta.z T+1
|
||||
lda #0
|
||||
sta.z I
|
||||
/* Write something into the frame */
|
||||
__b1:
|
||||
// for (I = 0, T = Text; I < sizeof (Text) / sizeof (TextDesc); ++I)
|
||||
lda.z I
|
||||
cmp #$c*$29/$29
|
||||
bcc __b2
|
||||
// }
|
||||
rts
|
||||
__b2:
|
||||
// strlen (T->Msg)
|
||||
lda.z T
|
||||
clc
|
||||
adc #1
|
||||
sta.z strlen.str
|
||||
lda.z T+1
|
||||
adc #0
|
||||
sta.z strlen.str+1
|
||||
jsr strlen
|
||||
// strlen (T->Msg)
|
||||
// (char)strlen (T->Msg)
|
||||
lda.z __21
|
||||
// XSize - (char)strlen (T->Msg)
|
||||
eor #$ff
|
||||
sec
|
||||
adc.z XSize
|
||||
// X = (XSize - (char)strlen (T->Msg)) >> 1
|
||||
lsr
|
||||
tax
|
||||
// cputsxy (X, T->Y, T->Msg)
|
||||
lda.z T
|
||||
clc
|
||||
adc #1
|
||||
sta.z cputsxy.s
|
||||
lda.z T+1
|
||||
adc #0
|
||||
sta.z cputsxy.s+1
|
||||
ldy #0
|
||||
lda (T),y
|
||||
jsr cputsxy
|
||||
// ++T;
|
||||
lda #$29
|
||||
clc
|
||||
adc.z T
|
||||
sta.z T
|
||||
bcc !+
|
||||
inc.z T+1
|
||||
!:
|
||||
// for (I = 0, T = Text; I < sizeof (Text) / sizeof (TextDesc); ++I)
|
||||
inc.z I
|
||||
jmp __b1
|
||||
Text: .byte 2
|
||||
.text "Wolfgang Amadeus Mozart"
|
||||
.byte 0
|
||||
.fill $10, 0
|
||||
.byte 4
|
||||
.text @"\"Eine kleine Nachtmusik\""
|
||||
.byte 0
|
||||
.fill $f, 0
|
||||
.byte 5
|
||||
.text "(KV 525)"
|
||||
.byte 0
|
||||
.fill $1f, 0
|
||||
.byte 9
|
||||
.text "Ported to the SID in 1987 by"
|
||||
.byte 0
|
||||
.fill $b, 0
|
||||
.byte $b
|
||||
.text "Joachim von Bassewitz"
|
||||
.byte 0
|
||||
.fill $12, 0
|
||||
.byte $c
|
||||
.text "(joachim@von-bassewitz.de)"
|
||||
.byte 0
|
||||
.fill $d, 0
|
||||
.byte $d
|
||||
.text "and"
|
||||
.byte 0
|
||||
.fill $24, 0
|
||||
.byte $e
|
||||
.text "Ullrich von Bassewitz"
|
||||
.byte 0
|
||||
.fill $12, 0
|
||||
.byte $f
|
||||
.text "(ullrich@von-bassewitz.de)"
|
||||
.byte 0
|
||||
.fill $d, 0
|
||||
.byte $12
|
||||
.text "C Implementation by"
|
||||
.byte 0
|
||||
.fill $14, 0
|
||||
.byte $13
|
||||
.text "Ullrich von Bassewitz"
|
||||
.byte 0
|
||||
.fill $12, 0
|
||||
.byte $17
|
||||
.text "Press any key to quit..."
|
||||
.byte 0
|
||||
.fill $f, 0
|
||||
}
|
||||
// Move cursor and output a NUL-terminated string
|
||||
// Same as "gotoxy (x, y); puts (s);"
|
||||
// cputsxy(byte register(X) x, byte register(A) y, byte* zp($b) s)
|
||||
cputsxy: {
|
||||
.label s = $b
|
||||
// gotoxy(x, y)
|
||||
jsr gotoxy
|
||||
// cputs(s)
|
||||
jsr cputs
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// Output a NUL-terminated string at the current cursor position
|
||||
// cputs(byte* zp($b) s)
|
||||
cputs: {
|
||||
.label s = $b
|
||||
__b1:
|
||||
// c=*s++
|
||||
ldy #0
|
||||
lda (s),y
|
||||
// while(c=*s++)
|
||||
inc.z s
|
||||
bne !+
|
||||
inc.z s+1
|
||||
!:
|
||||
cmp #0
|
||||
bne __b2
|
||||
// }
|
||||
rts
|
||||
__b2:
|
||||
// cputc(c)
|
||||
jsr cputc
|
||||
jmp __b1
|
||||
}
|
||||
// Output one character at the current cursor position
|
||||
// Moves the cursor forward
|
||||
// cputc(byte register(A) c)
|
||||
cputc: {
|
||||
// if(c=='\n')
|
||||
cmp #'\n'
|
||||
beq __b1
|
||||
// *conio_cursor_text++ = c
|
||||
ldy #0
|
||||
sta (conio_cursor_text),y
|
||||
// *conio_cursor_text++ = c;
|
||||
inc.z conio_cursor_text
|
||||
bne !+
|
||||
inc.z conio_cursor_text+1
|
||||
!:
|
||||
// *conio_cursor_color++ = conio_textcolor
|
||||
lda #COLOR_GRAY3
|
||||
ldy #0
|
||||
sta (conio_cursor_color),y
|
||||
// *conio_cursor_color++ = conio_textcolor;
|
||||
inc.z conio_cursor_color
|
||||
bne !+
|
||||
inc.z conio_cursor_color+1
|
||||
!:
|
||||
// if(++conio_cursor_x==CONIO_WIDTH)
|
||||
inc.z conio_cursor_x
|
||||
lda #CONIO_WIDTH
|
||||
cmp.z conio_cursor_x
|
||||
bne __breturn
|
||||
// if(++conio_cursor_y==CONIO_HEIGHT)
|
||||
inc.z conio_cursor_y
|
||||
lda #CONIO_HEIGHT
|
||||
cmp.z conio_cursor_y
|
||||
bne __b3
|
||||
// gotoxy(0,0)
|
||||
lda #0
|
||||
tax
|
||||
jsr gotoxy
|
||||
rts
|
||||
__b3:
|
||||
lda #0
|
||||
sta.z conio_cursor_x
|
||||
__breturn:
|
||||
// }
|
||||
rts
|
||||
__b1:
|
||||
// gotoxy(0, conio_cursor_y+1)
|
||||
lda.z conio_cursor_y
|
||||
clc
|
||||
adc #1
|
||||
ldx #0
|
||||
jsr gotoxy
|
||||
rts
|
||||
}
|
||||
// Set the cursor to the specified position
|
||||
// gotoxy(byte register(X) x, byte register(A) y)
|
||||
gotoxy: {
|
||||
.label __4 = 8
|
||||
.label __5 = 8
|
||||
.label offset = 8
|
||||
.label __9 = $11
|
||||
.label __10 = 8
|
||||
// if(x>=CONIO_WIDTH)
|
||||
cpx #CONIO_WIDTH
|
||||
bcc __b1
|
||||
ldx #0
|
||||
__b1:
|
||||
// if(y>=CONIO_HEIGHT)
|
||||
cmp #CONIO_HEIGHT
|
||||
bcc __b2
|
||||
lda #0
|
||||
__b2:
|
||||
// conio_cursor_x = x
|
||||
stx.z conio_cursor_x
|
||||
// conio_cursor_y = y
|
||||
sta.z conio_cursor_y
|
||||
// (unsigned int)y
|
||||
sta.z __4
|
||||
lda #0
|
||||
sta.z __4+1
|
||||
// (unsigned int)y*CONIO_WIDTH
|
||||
lda.z __4
|
||||
asl
|
||||
sta.z __9
|
||||
lda.z __4+1
|
||||
rol
|
||||
sta.z __9+1
|
||||
asl.z __9
|
||||
rol.z __9+1
|
||||
lda.z __10
|
||||
clc
|
||||
adc.z __9
|
||||
sta.z __10
|
||||
lda.z __10+1
|
||||
adc.z __9+1
|
||||
sta.z __10+1
|
||||
asl.z __5
|
||||
rol.z __5+1
|
||||
asl.z __5
|
||||
rol.z __5+1
|
||||
asl.z __5
|
||||
rol.z __5+1
|
||||
// offset = (unsigned int)y*CONIO_WIDTH + x
|
||||
txa
|
||||
clc
|
||||
adc.z offset
|
||||
sta.z offset
|
||||
bcc !+
|
||||
inc.z offset+1
|
||||
!:
|
||||
// CONIO_SCREEN_TEXT + offset
|
||||
lda.z offset
|
||||
clc
|
||||
adc #<CONIO_SCREEN_TEXT
|
||||
sta.z conio_cursor_text
|
||||
lda.z offset+1
|
||||
adc #>CONIO_SCREEN_TEXT
|
||||
sta.z conio_cursor_text+1
|
||||
// CONIO_SCREEN_COLORS + offset
|
||||
clc
|
||||
lda.z conio_cursor_color
|
||||
adc #<CONIO_SCREEN_COLORS
|
||||
sta.z conio_cursor_color
|
||||
lda.z conio_cursor_color+1
|
||||
adc #>CONIO_SCREEN_COLORS
|
||||
sta.z conio_cursor_color+1
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// Computes the length of the string str up to but not including the terminating null character.
|
||||
// strlen(byte* zp($11) str)
|
||||
strlen: {
|
||||
.label len = $b
|
||||
.label str = $11
|
||||
.label return = $b
|
||||
lda #<0
|
||||
sta.z len
|
||||
sta.z len+1
|
||||
__b1:
|
||||
// while(*str)
|
||||
ldy #0
|
||||
lda (str),y
|
||||
cmp #0
|
||||
bne __b2
|
||||
// }
|
||||
rts
|
||||
__b2:
|
||||
// len++;
|
||||
inc.z len
|
||||
bne !+
|
||||
inc.z len+1
|
||||
!:
|
||||
// str++;
|
||||
inc.z str
|
||||
bne !+
|
||||
inc.z str+1
|
||||
!:
|
||||
jmp __b1
|
||||
}
|
||||
// MakeTeeLine(byte register(A) Y)
|
||||
MakeTeeLine: {
|
||||
// cputcxy (0, Y, CH_LTEE)
|
||||
ldy #CH_LTEE
|
||||
jsr cputcxy
|
||||
// chline (XSize - 2)
|
||||
lda.z XSize
|
||||
sec
|
||||
sbc #2
|
||||
sta.z chline.length
|
||||
jsr chline
|
||||
// cputc (CH_RTEE)
|
||||
lda #CH_RTEE
|
||||
jsr cputc
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// Output a horizontal line with the given length starting at the current cursor position.
|
||||
// chline(byte zp($d) length)
|
||||
chline: {
|
||||
.label i = $e
|
||||
.label length = $d
|
||||
lda #0
|
||||
sta.z i
|
||||
__b1:
|
||||
// for(char i=0;i<length;i++)
|
||||
lda.z i
|
||||
cmp.z length
|
||||
bcc __b2
|
||||
// }
|
||||
rts
|
||||
__b2:
|
||||
// cputc(CH_HLINE)
|
||||
lda #CH_HLINE
|
||||
jsr cputc
|
||||
// for(char i=0;i<length;i++)
|
||||
inc.z i
|
||||
jmp __b1
|
||||
}
|
||||
// Move cursor and output one character
|
||||
// Same as "gotoxy (x, y); cputc (c);"
|
||||
// cputcxy(byte register(A) y, byte register(Y) c)
|
||||
cputcxy: {
|
||||
// gotoxy(x, y)
|
||||
ldx #0
|
||||
jsr gotoxy
|
||||
// cputc(c)
|
||||
tya
|
||||
jsr cputc
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// Move cursor and output a vertical line with the given length
|
||||
// Same as "gotoxy (x, y); cvline (length);"
|
||||
// cvlinexy(byte register(X) x)
|
||||
cvlinexy: {
|
||||
// gotoxy(x,y)
|
||||
lda #1
|
||||
jsr gotoxy
|
||||
// cvline(length)
|
||||
jsr cvline
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// Output a vertical line with the given length at the current cursor position.
|
||||
cvline: {
|
||||
.const length = $17
|
||||
.label x = $13
|
||||
.label y = $e
|
||||
.label i = $d
|
||||
// x = conio_cursor_x
|
||||
lda.z conio_cursor_x
|
||||
sta.z x
|
||||
// y = conio_cursor_y
|
||||
lda.z conio_cursor_y
|
||||
sta.z y
|
||||
lda #0
|
||||
sta.z i
|
||||
__b1:
|
||||
// for(char i=0;i<length;i++)
|
||||
lda.z i
|
||||
cmp #length
|
||||
bcc __b2
|
||||
// }
|
||||
rts
|
||||
__b2:
|
||||
// cputc(CH_VLINE)
|
||||
lda #CH_VLINE
|
||||
jsr cputc
|
||||
// gotoxy(x, ++y);
|
||||
inc.z y
|
||||
// gotoxy(x, ++y)
|
||||
ldx.z x
|
||||
lda.z y
|
||||
jsr gotoxy
|
||||
// for(char i=0;i<length;i++)
|
||||
inc.z i
|
||||
jmp __b1
|
||||
}
|
||||
// If onoff is 1, a cursor is displayed when waiting for keyboard input.
|
||||
// If onoff is 0, the cursor is hidden when waiting for keyboard input.
|
||||
// The function returns the old cursor setting.
|
||||
cursor: {
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// Set the color for the background. The old color setting is returned.
|
||||
bgcolor: {
|
||||
// *CONIO_BGCOLOR = color
|
||||
lda #COLOR_BLACK
|
||||
sta CONIO_BGCOLOR
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// Set the color for the border. The old color setting is returned.
|
||||
bordercolor: {
|
||||
// *CONIO_BORDERCOLOR = color
|
||||
lda #COLOR_BLACK
|
||||
sta CONIO_BORDERCOLOR
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// Set the color for text output. The old color setting is returned.
|
||||
textcolor: {
|
||||
rts
|
||||
}
|
||||
// Return the current screen size.
|
||||
screensize: {
|
||||
.label x = XSize
|
||||
.label y = YSize
|
||||
// *x = CONIO_WIDTH
|
||||
lda #CONIO_WIDTH
|
||||
sta.z x
|
||||
// *y = CONIO_HEIGHT
|
||||
lda #CONIO_HEIGHT
|
||||
sta.z y
|
||||
// }
|
||||
rts
|
||||
}
|
422
src/test/ref/examples/conio/nacht-screen.cfg
Normal file
422
src/test/ref/examples/conio/nacht-screen.cfg
Normal file
@ -0,0 +1,422 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] (volatile byte) XSize ← (byte) 0
|
||||
[2] (volatile byte) YSize ← (byte) 0
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
[3] phi()
|
||||
[4] call main
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
[5] phi()
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
[6] *((const nomodify byte*) VIC_MEMORY) ← (byte) $17
|
||||
[7] call screensize
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
[8] phi()
|
||||
[9] call MakeNiceScreen
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@3 main::@4
|
||||
[10] phi()
|
||||
[11] call kbhit
|
||||
[12] (byte) kbhit::return#2 ← (byte) kbhit::return#0
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@1
|
||||
[13] (byte~) main::$3 ← (byte) kbhit::return#2
|
||||
[14] if((byte) 0==(byte~) main::$3) goto main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@4
|
||||
[15] phi()
|
||||
[16] call clrscr
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@2
|
||||
[17] return
|
||||
to:@return
|
||||
|
||||
(void()) clrscr()
|
||||
clrscr: scope:[clrscr] from MakeNiceScreen::@5 main::@2
|
||||
[18] phi()
|
||||
to:clrscr::@1
|
||||
clrscr::@1: scope:[clrscr] from clrscr clrscr::@4
|
||||
[19] (byte*) clrscr::line_cols#5 ← phi( clrscr/(const nomodify byte*) CONIO_SCREEN_COLORS clrscr::@4/(byte*) clrscr::line_cols#1 )
|
||||
[19] (byte*) clrscr::line_text#5 ← phi( clrscr/(const nomodify byte*) CONIO_SCREEN_TEXT clrscr::@4/(byte*) clrscr::line_text#1 )
|
||||
[19] (byte) clrscr::l#2 ← phi( clrscr/(byte) 0 clrscr::@4/(byte) clrscr::l#1 )
|
||||
[20] if((byte) clrscr::l#2<(const nomodify byte) CONIO_HEIGHT) goto clrscr::@2
|
||||
to:clrscr::@return
|
||||
clrscr::@return: scope:[clrscr] from clrscr::@1
|
||||
[21] return
|
||||
to:@return
|
||||
clrscr::@2: scope:[clrscr] from clrscr::@1 clrscr::@3
|
||||
[22] (byte) clrscr::c#2 ← phi( clrscr::@1/(byte) 0 clrscr::@3/(byte) clrscr::c#1 )
|
||||
[23] if((byte) clrscr::c#2<(const nomodify byte) CONIO_WIDTH) goto clrscr::@3
|
||||
to:clrscr::@4
|
||||
clrscr::@4: scope:[clrscr] from clrscr::@2
|
||||
[24] (byte*) clrscr::line_text#1 ← (byte*) clrscr::line_text#5 + (const nomodify byte) CONIO_WIDTH
|
||||
[25] (byte*) clrscr::line_cols#1 ← (byte*) clrscr::line_cols#5 + (const nomodify byte) CONIO_WIDTH
|
||||
[26] (byte) clrscr::l#1 ← ++ (byte) clrscr::l#2
|
||||
to:clrscr::@1
|
||||
clrscr::@3: scope:[clrscr] from clrscr::@2
|
||||
[27] *((byte*) clrscr::line_text#5 + (byte) clrscr::c#2) ← (byte) ' '
|
||||
[28] *((byte*) clrscr::line_cols#5 + (byte) clrscr::c#2) ← (const nomodify byte) COLOR_GRAY3
|
||||
[29] (byte) clrscr::c#1 ← ++ (byte) clrscr::c#2
|
||||
to:clrscr::@2
|
||||
|
||||
(byte()) kbhit()
|
||||
kbhit: scope:[kbhit] from main::@1
|
||||
[30] *((const nomodify byte*) CONIO_CIA1_PORT_A) ← (byte) 0
|
||||
[31] (byte) kbhit::return#0 ← ~ *((const nomodify byte*) CONIO_CIA1_PORT_B)
|
||||
to:kbhit::@return
|
||||
kbhit::@return: scope:[kbhit] from kbhit
|
||||
[32] return
|
||||
to:@return
|
||||
|
||||
(void()) MakeNiceScreen()
|
||||
MakeNiceScreen: scope:[MakeNiceScreen] from main::@3
|
||||
[33] phi()
|
||||
[34] call textcolor
|
||||
to:MakeNiceScreen::@3
|
||||
MakeNiceScreen::@3: scope:[MakeNiceScreen] from MakeNiceScreen
|
||||
[35] phi()
|
||||
[36] call bordercolor
|
||||
to:MakeNiceScreen::@4
|
||||
MakeNiceScreen::@4: scope:[MakeNiceScreen] from MakeNiceScreen::@3
|
||||
[37] phi()
|
||||
[38] call bgcolor
|
||||
to:MakeNiceScreen::@5
|
||||
MakeNiceScreen::@5: scope:[MakeNiceScreen] from MakeNiceScreen::@4
|
||||
[39] phi()
|
||||
[40] call clrscr
|
||||
to:MakeNiceScreen::@6
|
||||
MakeNiceScreen::@6: scope:[MakeNiceScreen] from MakeNiceScreen::@5
|
||||
[41] phi()
|
||||
[42] call cursor
|
||||
to:MakeNiceScreen::@7
|
||||
MakeNiceScreen::@7: scope:[MakeNiceScreen] from MakeNiceScreen::@6
|
||||
[43] phi()
|
||||
[44] call cputcxy
|
||||
to:MakeNiceScreen::@8
|
||||
MakeNiceScreen::@8: scope:[MakeNiceScreen] from MakeNiceScreen::@7
|
||||
[45] (byte) chline::length#1 ← (volatile byte) XSize - (byte) 2
|
||||
[46] call chline
|
||||
to:MakeNiceScreen::@9
|
||||
MakeNiceScreen::@9: scope:[MakeNiceScreen] from MakeNiceScreen::@8
|
||||
[47] phi()
|
||||
[48] call cputc
|
||||
to:MakeNiceScreen::@10
|
||||
MakeNiceScreen::@10: scope:[MakeNiceScreen] from MakeNiceScreen::@9
|
||||
[49] phi()
|
||||
[50] call cvlinexy
|
||||
to:MakeNiceScreen::@11
|
||||
MakeNiceScreen::@11: scope:[MakeNiceScreen] from MakeNiceScreen::@10
|
||||
[51] phi()
|
||||
[52] call cputc
|
||||
to:MakeNiceScreen::@12
|
||||
MakeNiceScreen::@12: scope:[MakeNiceScreen] from MakeNiceScreen::@11
|
||||
[53] (byte) chline::length#2 ← (volatile byte) XSize - (byte) 2
|
||||
[54] call chline
|
||||
to:MakeNiceScreen::@13
|
||||
MakeNiceScreen::@13: scope:[MakeNiceScreen] from MakeNiceScreen::@12
|
||||
[55] phi()
|
||||
[56] call cputc
|
||||
to:MakeNiceScreen::@14
|
||||
MakeNiceScreen::@14: scope:[MakeNiceScreen] from MakeNiceScreen::@13
|
||||
[57] (byte) cvlinexy::x#1 ← (volatile byte) XSize - (byte) 1
|
||||
[58] call cvlinexy
|
||||
to:MakeNiceScreen::@15
|
||||
MakeNiceScreen::@15: scope:[MakeNiceScreen] from MakeNiceScreen::@14
|
||||
[59] phi()
|
||||
[60] call MakeTeeLine
|
||||
to:MakeNiceScreen::@16
|
||||
MakeNiceScreen::@16: scope:[MakeNiceScreen] from MakeNiceScreen::@15
|
||||
[61] phi()
|
||||
[62] call MakeTeeLine
|
||||
to:MakeNiceScreen::@1
|
||||
MakeNiceScreen::@1: scope:[MakeNiceScreen] from MakeNiceScreen::@16 MakeNiceScreen::@18
|
||||
[63] (to_nomodify struct $0*) MakeNiceScreen::T#3 ← phi( MakeNiceScreen::@16/(const struct $0*) MakeNiceScreen::Text MakeNiceScreen::@18/(to_nomodify struct $0*) MakeNiceScreen::T#2 )
|
||||
[63] (byte) MakeNiceScreen::I#3 ← phi( MakeNiceScreen::@16/(byte) 0 MakeNiceScreen::@18/(byte) MakeNiceScreen::I#2 )
|
||||
[64] if((byte) MakeNiceScreen::I#3<(byte) $c*(byte) $29/(byte) $29) goto MakeNiceScreen::@2
|
||||
to:MakeNiceScreen::@return
|
||||
MakeNiceScreen::@return: scope:[MakeNiceScreen] from MakeNiceScreen::@1
|
||||
[65] return
|
||||
to:@return
|
||||
MakeNiceScreen::@2: scope:[MakeNiceScreen] from MakeNiceScreen::@1
|
||||
[66] (byte*) strlen::str#1 ← (byte*)(to_nomodify struct $0*) MakeNiceScreen::T#3 + (byte) 1
|
||||
[67] call strlen
|
||||
[68] (word) strlen::return#2 ← (word) strlen::len#2
|
||||
to:MakeNiceScreen::@17
|
||||
MakeNiceScreen::@17: scope:[MakeNiceScreen] from MakeNiceScreen::@2
|
||||
[69] (word~) MakeNiceScreen::$21 ← (word) strlen::return#2
|
||||
[70] (byte~) MakeNiceScreen::$22 ← (byte)(word~) MakeNiceScreen::$21
|
||||
[71] (byte~) MakeNiceScreen::$23 ← (volatile byte) XSize - (byte~) MakeNiceScreen::$22
|
||||
[72] (byte) MakeNiceScreen::X#1 ← (byte~) MakeNiceScreen::$23 >> (byte) 1
|
||||
[73] (to_nomodify byte*) cputsxy::s#0 ← (byte*)(to_nomodify struct $0*) MakeNiceScreen::T#3 + (byte) 1
|
||||
[74] (byte) cputsxy::x#0 ← (byte) MakeNiceScreen::X#1
|
||||
[75] (byte) cputsxy::y#0 ← *((byte*)(to_nomodify struct $0*) MakeNiceScreen::T#3)
|
||||
[76] call cputsxy
|
||||
to:MakeNiceScreen::@18
|
||||
MakeNiceScreen::@18: scope:[MakeNiceScreen] from MakeNiceScreen::@17
|
||||
[77] (to_nomodify struct $0*) MakeNiceScreen::T#2 ← (to_nomodify struct $0*) MakeNiceScreen::T#3 + (byte) $29
|
||||
[78] (byte) MakeNiceScreen::I#2 ← ++ (byte) MakeNiceScreen::I#3
|
||||
to:MakeNiceScreen::@1
|
||||
|
||||
(void()) cputsxy((byte) cputsxy::x , (byte) cputsxy::y , (to_nomodify byte*) cputsxy::s)
|
||||
cputsxy: scope:[cputsxy] from MakeNiceScreen::@17
|
||||
[79] (byte) gotoxy::x#4 ← (byte) cputsxy::x#0
|
||||
[80] (byte) gotoxy::y#4 ← (byte) cputsxy::y#0
|
||||
[81] call gotoxy
|
||||
to:cputsxy::@1
|
||||
cputsxy::@1: scope:[cputsxy] from cputsxy
|
||||
[82] (to_nomodify byte*) cputs::s#1 ← (to_nomodify byte*) cputsxy::s#0
|
||||
[83] call cputs
|
||||
to:cputsxy::@return
|
||||
cputsxy::@return: scope:[cputsxy] from cputsxy::@1
|
||||
[84] return
|
||||
to:@return
|
||||
|
||||
(void()) cputs((to_nomodify byte*) cputs::s)
|
||||
cputs: scope:[cputs] from cputsxy::@1
|
||||
[85] phi()
|
||||
to:cputs::@1
|
||||
cputs::@1: scope:[cputs] from cputs cputs::@2
|
||||
[86] (byte*) conio_cursor_color#13 ← phi( cputs/(byte*) conio_cursor_color#3 cputs::@2/(byte*) conio_cursor_color#51 )
|
||||
[86] (byte*) conio_cursor_text#13 ← phi( cputs/(byte*) conio_cursor_text#3 cputs::@2/(byte*) conio_cursor_text#51 )
|
||||
[86] (byte) conio_cursor_y#13 ← phi( cputs/(byte) conio_cursor_y#3 cputs::@2/(byte) conio_cursor_y#52 )
|
||||
[86] (byte) conio_cursor_x#14 ← phi( cputs/(byte) conio_cursor_x#3 cputs::@2/(byte) conio_cursor_x#52 )
|
||||
[86] (to_nomodify byte*) cputs::s#2 ← phi( cputs/(to_nomodify byte*) cputs::s#1 cputs::@2/(to_nomodify byte*) cputs::s#0 )
|
||||
[87] (byte) cputs::c#1 ← *((to_nomodify byte*) cputs::s#2)
|
||||
[88] (to_nomodify byte*) cputs::s#0 ← ++ (to_nomodify byte*) cputs::s#2
|
||||
[89] if((byte) 0!=(byte) cputs::c#1) goto cputs::@2
|
||||
to:cputs::@return
|
||||
cputs::@return: scope:[cputs] from cputs::@1
|
||||
[90] return
|
||||
to:@return
|
||||
cputs::@2: scope:[cputs] from cputs::@1
|
||||
[91] (byte) cputc::c#1 ← (byte) cputs::c#1
|
||||
[92] call cputc
|
||||
to:cputs::@1
|
||||
|
||||
(void()) cputc((byte) cputc::c)
|
||||
cputc: scope:[cputc] from MakeNiceScreen::@11 MakeNiceScreen::@13 MakeNiceScreen::@9 MakeTeeLine::@2 chline::@2 cputcxy::@1 cputs::@2 cvline::@2
|
||||
[93] (byte) conio_cursor_x#50 ← phi( MakeNiceScreen::@9/(byte) conio_cursor_x#52 MakeNiceScreen::@11/(byte) conio_cursor_x#3 MakeNiceScreen::@13/(byte) conio_cursor_x#52 MakeTeeLine::@2/(byte) conio_cursor_x#52 chline::@2/(byte) conio_cursor_x#52 cputcxy::@1/(byte) conio_cursor_x#3 cputs::@2/(byte) conio_cursor_x#14 cvline::@2/(byte) conio_cursor_x#3 )
|
||||
[93] (byte*) conio_cursor_color#49 ← phi( MakeNiceScreen::@9/(byte*) conio_cursor_color#51 MakeNiceScreen::@11/(byte*) conio_cursor_color#3 MakeNiceScreen::@13/(byte*) conio_cursor_color#51 MakeTeeLine::@2/(byte*) conio_cursor_color#51 chline::@2/(byte*) conio_cursor_color#51 cputcxy::@1/(byte*) conio_cursor_color#3 cputs::@2/(byte*) conio_cursor_color#13 cvline::@2/(byte*) conio_cursor_color#3 )
|
||||
[93] (byte*) conio_cursor_text#49 ← phi( MakeNiceScreen::@9/(byte*) conio_cursor_text#51 MakeNiceScreen::@11/(byte*) conio_cursor_text#3 MakeNiceScreen::@13/(byte*) conio_cursor_text#51 MakeTeeLine::@2/(byte*) conio_cursor_text#51 chline::@2/(byte*) conio_cursor_text#51 cputcxy::@1/(byte*) conio_cursor_text#3 cputs::@2/(byte*) conio_cursor_text#13 cvline::@2/(byte*) conio_cursor_text#3 )
|
||||
[93] (byte) conio_cursor_y#48 ← phi( MakeNiceScreen::@9/(byte) conio_cursor_y#52 MakeNiceScreen::@11/(byte) conio_cursor_y#3 MakeNiceScreen::@13/(byte) conio_cursor_y#52 MakeTeeLine::@2/(byte) conio_cursor_y#52 chline::@2/(byte) conio_cursor_y#52 cputcxy::@1/(byte) conio_cursor_y#3 cputs::@2/(byte) conio_cursor_y#13 cvline::@2/(byte) conio_cursor_y#3 )
|
||||
[93] (byte) cputc::c#8 ← phi( MakeNiceScreen::@9/(const nomodify byte) CH_URCORNER MakeNiceScreen::@11/(const nomodify byte) CH_LLCORNER MakeNiceScreen::@13/(const nomodify byte) CH_LRCORNER MakeTeeLine::@2/(const nomodify byte) CH_RTEE chline::@2/(const nomodify byte) CH_HLINE cputcxy::@1/(byte) cputc::c#0 cputs::@2/(byte) cputc::c#1 cvline::@2/(const nomodify byte) CH_VLINE )
|
||||
[94] if((byte) cputc::c#8==(byte) '
|
||||
') goto cputc::@1
|
||||
to:cputc::@2
|
||||
cputc::@2: scope:[cputc] from cputc
|
||||
[95] *((byte*) conio_cursor_text#49) ← (byte) cputc::c#8
|
||||
[96] (byte*) conio_cursor_text#6 ← ++ (byte*) conio_cursor_text#49
|
||||
[97] *((byte*) conio_cursor_color#49) ← (const nomodify byte) COLOR_GRAY3
|
||||
[98] (byte*) conio_cursor_color#6 ← ++ (byte*) conio_cursor_color#49
|
||||
[99] (byte) conio_cursor_x#6 ← ++ (byte) conio_cursor_x#50
|
||||
[100] if((byte) conio_cursor_x#6!=(const nomodify byte) CONIO_WIDTH) goto cputc::@return
|
||||
to:cputc::@3
|
||||
cputc::@3: scope:[cputc] from cputc::@2
|
||||
[101] (byte) conio_cursor_y#6 ← ++ (byte) conio_cursor_y#48
|
||||
[102] if((byte) conio_cursor_y#6!=(const nomodify byte) CONIO_HEIGHT) goto cputc::@return
|
||||
to:cputc::@4
|
||||
cputc::@4: scope:[cputc] from cputc::@3
|
||||
[103] phi()
|
||||
[104] call gotoxy
|
||||
to:cputc::@return
|
||||
cputc::@return: scope:[cputc] from cputc::@1 cputc::@2 cputc::@3 cputc::@4
|
||||
[105] (byte*) conio_cursor_color#51 ← phi( cputc::@4/(byte*) conio_cursor_color#3 cputc::@2/(byte*) conio_cursor_color#6 cputc::@3/(byte*) conio_cursor_color#6 cputc::@1/(byte*) conio_cursor_color#3 )
|
||||
[105] (byte*) conio_cursor_text#51 ← phi( cputc::@4/(byte*) conio_cursor_text#3 cputc::@2/(byte*) conio_cursor_text#6 cputc::@3/(byte*) conio_cursor_text#6 cputc::@1/(byte*) conio_cursor_text#3 )
|
||||
[105] (byte) conio_cursor_y#52 ← phi( cputc::@4/(byte) conio_cursor_y#3 cputc::@2/(byte) conio_cursor_y#48 cputc::@3/(byte) conio_cursor_y#6 cputc::@1/(byte) conio_cursor_y#3 )
|
||||
[105] (byte) conio_cursor_x#52 ← phi( cputc::@4/(byte) conio_cursor_x#3 cputc::@2/(byte) conio_cursor_x#6 cputc::@3/(byte) 0 cputc::@1/(byte) conio_cursor_x#3 )
|
||||
[106] return
|
||||
to:@return
|
||||
cputc::@1: scope:[cputc] from cputc
|
||||
[107] (byte) gotoxy::y#1 ← (byte) conio_cursor_y#48 + (byte) 1
|
||||
[108] call gotoxy
|
||||
to:cputc::@return
|
||||
|
||||
(void()) gotoxy((byte) gotoxy::x , (byte) gotoxy::y)
|
||||
gotoxy: scope:[gotoxy] from cputc::@1 cputc::@4 cputcxy cputsxy cvline::@3 cvlinexy
|
||||
[109] (byte) gotoxy::y#10 ← phi( cputc::@1/(byte) gotoxy::y#1 cputc::@4/(byte) 0 cputcxy/(byte) gotoxy::y#3 cputsxy/(byte) gotoxy::y#4 cvline::@3/(byte) gotoxy::y#5 cvlinexy/(byte) 1 )
|
||||
[109] (byte) gotoxy::x#7 ← phi( cputc::@1/(byte) 0 cputc::@4/(byte) 0 cputcxy/(byte) 0 cputsxy/(byte) gotoxy::x#4 cvline::@3/(byte) gotoxy::x#5 cvlinexy/(byte) gotoxy::x#6 )
|
||||
[110] if((byte) gotoxy::x#7<(const nomodify byte) CONIO_WIDTH) goto gotoxy::@3
|
||||
to:gotoxy::@1
|
||||
gotoxy::@3: scope:[gotoxy] from gotoxy
|
||||
[111] phi()
|
||||
to:gotoxy::@1
|
||||
gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@3
|
||||
[112] (byte) gotoxy::x#10 ← phi( gotoxy::@3/(byte) gotoxy::x#7 gotoxy/(byte) 0 )
|
||||
[113] if((byte) gotoxy::y#10<(const nomodify byte) CONIO_HEIGHT) goto gotoxy::@4
|
||||
to:gotoxy::@2
|
||||
gotoxy::@4: scope:[gotoxy] from gotoxy::@1
|
||||
[114] phi()
|
||||
to:gotoxy::@2
|
||||
gotoxy::@2: scope:[gotoxy] from gotoxy::@1 gotoxy::@4
|
||||
[115] (byte) gotoxy::y#8 ← phi( gotoxy::@4/(byte) gotoxy::y#10 gotoxy::@1/(byte) 0 )
|
||||
[116] (byte) conio_cursor_x#3 ← (byte) gotoxy::x#10
|
||||
[117] (byte) conio_cursor_y#3 ← (byte) gotoxy::y#8
|
||||
[118] (word~) gotoxy::$4 ← (word)(byte) gotoxy::y#8
|
||||
[119] (word~) gotoxy::$9 ← (word~) gotoxy::$4 << (byte) 2
|
||||
[120] (word~) gotoxy::$10 ← (word~) gotoxy::$9 + (word~) gotoxy::$4
|
||||
[121] (word~) gotoxy::$5 ← (word~) gotoxy::$10 << (byte) 3
|
||||
[122] (word) gotoxy::offset#0 ← (word~) gotoxy::$5 + (byte) gotoxy::x#10
|
||||
[123] (byte*) conio_cursor_text#3 ← (const nomodify byte*) CONIO_SCREEN_TEXT + (word) gotoxy::offset#0
|
||||
[124] (byte*) conio_cursor_color#3 ← (const nomodify byte*) CONIO_SCREEN_COLORS + (word) gotoxy::offset#0
|
||||
to:gotoxy::@return
|
||||
gotoxy::@return: scope:[gotoxy] from gotoxy::@2
|
||||
[125] return
|
||||
to:@return
|
||||
|
||||
(word()) strlen((byte*) strlen::str)
|
||||
strlen: scope:[strlen] from MakeNiceScreen::@2
|
||||
[126] phi()
|
||||
to:strlen::@1
|
||||
strlen::@1: scope:[strlen] from strlen strlen::@2
|
||||
[127] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 )
|
||||
[127] (byte*) strlen::str#2 ← phi( strlen/(byte*) strlen::str#1 strlen::@2/(byte*) strlen::str#0 )
|
||||
[128] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2
|
||||
to:strlen::@return
|
||||
strlen::@return: scope:[strlen] from strlen::@1
|
||||
[129] return
|
||||
to:@return
|
||||
strlen::@2: scope:[strlen] from strlen::@1
|
||||
[130] (word) strlen::len#1 ← ++ (word) strlen::len#2
|
||||
[131] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2
|
||||
to:strlen::@1
|
||||
|
||||
(void()) MakeTeeLine((byte) MakeTeeLine::Y)
|
||||
MakeTeeLine: scope:[MakeTeeLine] from MakeNiceScreen::@15 MakeNiceScreen::@16
|
||||
[132] (byte) MakeTeeLine::Y#2 ← phi( MakeNiceScreen::@15/(byte) 7 MakeNiceScreen::@16/(byte) $16 )
|
||||
[133] (byte) cputcxy::y#0 ← (byte) MakeTeeLine::Y#2
|
||||
[134] call cputcxy
|
||||
to:MakeTeeLine::@1
|
||||
MakeTeeLine::@1: scope:[MakeTeeLine] from MakeTeeLine
|
||||
[135] (byte) chline::length#0 ← (volatile byte) XSize - (byte) 2
|
||||
[136] call chline
|
||||
to:MakeTeeLine::@2
|
||||
MakeTeeLine::@2: scope:[MakeTeeLine] from MakeTeeLine::@1
|
||||
[137] phi()
|
||||
[138] call cputc
|
||||
to:MakeTeeLine::@return
|
||||
MakeTeeLine::@return: scope:[MakeTeeLine] from MakeTeeLine::@2
|
||||
[139] return
|
||||
to:@return
|
||||
|
||||
(void()) chline((byte) chline::length)
|
||||
chline: scope:[chline] from MakeNiceScreen::@12 MakeNiceScreen::@8 MakeTeeLine::@1
|
||||
[140] (byte) chline::length#4 ← phi( MakeNiceScreen::@8/(byte) chline::length#1 MakeNiceScreen::@12/(byte) chline::length#2 MakeTeeLine::@1/(byte) chline::length#0 )
|
||||
to:chline::@1
|
||||
chline::@1: scope:[chline] from chline chline::@3
|
||||
[141] (byte) chline::i#2 ← phi( chline/(byte) 0 chline::@3/(byte) chline::i#1 )
|
||||
[142] if((byte) chline::i#2<(byte) chline::length#4) goto chline::@2
|
||||
to:chline::@return
|
||||
chline::@return: scope:[chline] from chline::@1
|
||||
[143] return
|
||||
to:@return
|
||||
chline::@2: scope:[chline] from chline::@1
|
||||
[144] phi()
|
||||
[145] call cputc
|
||||
to:chline::@3
|
||||
chline::@3: scope:[chline] from chline::@2
|
||||
[146] (byte) chline::i#1 ← ++ (byte) chline::i#2
|
||||
to:chline::@1
|
||||
|
||||
(void()) cputcxy((byte) cputcxy::x , (byte) cputcxy::y , (byte) cputcxy::c)
|
||||
cputcxy: scope:[cputcxy] from MakeNiceScreen::@7 MakeTeeLine
|
||||
[147] (byte) cputcxy::c#2 ← phi( MakeNiceScreen::@7/(const nomodify byte) CH_ULCORNER MakeTeeLine/(const nomodify byte) CH_LTEE )
|
||||
[147] (byte) cputcxy::y#2 ← phi( MakeNiceScreen::@7/(byte) 0 MakeTeeLine/(byte) cputcxy::y#0 )
|
||||
[148] (byte) gotoxy::y#3 ← (byte) cputcxy::y#2
|
||||
[149] call gotoxy
|
||||
to:cputcxy::@1
|
||||
cputcxy::@1: scope:[cputcxy] from cputcxy
|
||||
[150] (byte) cputc::c#0 ← (byte) cputcxy::c#2
|
||||
[151] call cputc
|
||||
to:cputcxy::@return
|
||||
cputcxy::@return: scope:[cputcxy] from cputcxy::@1
|
||||
[152] return
|
||||
to:@return
|
||||
|
||||
(void()) cvlinexy((byte) cvlinexy::x , (byte) cvlinexy::y , (byte) cvlinexy::length)
|
||||
cvlinexy: scope:[cvlinexy] from MakeNiceScreen::@10 MakeNiceScreen::@14
|
||||
[153] (byte) cvlinexy::x#2 ← phi( MakeNiceScreen::@10/(byte) 0 MakeNiceScreen::@14/(byte) cvlinexy::x#1 )
|
||||
[154] (byte) gotoxy::x#6 ← (byte) cvlinexy::x#2
|
||||
[155] call gotoxy
|
||||
to:cvlinexy::@1
|
||||
cvlinexy::@1: scope:[cvlinexy] from cvlinexy
|
||||
[156] phi()
|
||||
[157] call cvline
|
||||
to:cvlinexy::@return
|
||||
cvlinexy::@return: scope:[cvlinexy] from cvlinexy::@1
|
||||
[158] return
|
||||
to:@return
|
||||
|
||||
(void()) cvline((byte) cvline::length)
|
||||
cvline: scope:[cvline] from cvlinexy::@1
|
||||
[159] (byte) cvline::x#0 ← (byte) conio_cursor_x#3
|
||||
[160] (byte) cvline::y#0 ← (byte) conio_cursor_y#3
|
||||
to:cvline::@1
|
||||
cvline::@1: scope:[cvline] from cvline cvline::@4
|
||||
[161] (byte) cvline::y#2 ← phi( cvline/(byte) cvline::y#0 cvline::@4/(byte) cvline::y#1 )
|
||||
[161] (byte) cvline::i#2 ← phi( cvline/(byte) 0 cvline::@4/(byte) cvline::i#1 )
|
||||
[162] if((byte) cvline::i#2<(const byte) cvline::length#0) goto cvline::@2
|
||||
to:cvline::@return
|
||||
cvline::@return: scope:[cvline] from cvline::@1
|
||||
[163] return
|
||||
to:@return
|
||||
cvline::@2: scope:[cvline] from cvline::@1
|
||||
[164] phi()
|
||||
[165] call cputc
|
||||
to:cvline::@3
|
||||
cvline::@3: scope:[cvline] from cvline::@2
|
||||
[166] (byte) cvline::y#1 ← ++ (byte) cvline::y#2
|
||||
[167] (byte) gotoxy::x#5 ← (byte) cvline::x#0
|
||||
[168] (byte) gotoxy::y#5 ← (byte) cvline::y#1
|
||||
[169] call gotoxy
|
||||
to:cvline::@4
|
||||
cvline::@4: scope:[cvline] from cvline::@3
|
||||
[170] (byte) cvline::i#1 ← ++ (byte) cvline::i#2
|
||||
to:cvline::@1
|
||||
|
||||
(byte()) cursor((byte) cursor::onoff)
|
||||
cursor: scope:[cursor] from MakeNiceScreen::@6
|
||||
[171] phi()
|
||||
to:cursor::@return
|
||||
cursor::@return: scope:[cursor] from cursor
|
||||
[172] return
|
||||
to:@return
|
||||
|
||||
(byte()) bgcolor((byte) bgcolor::color)
|
||||
bgcolor: scope:[bgcolor] from MakeNiceScreen::@4
|
||||
[173] *((const nomodify byte*) CONIO_BGCOLOR) ← (const nomodify byte) COLOR_BLACK
|
||||
to:bgcolor::@return
|
||||
bgcolor::@return: scope:[bgcolor] from bgcolor
|
||||
[174] return
|
||||
to:@return
|
||||
|
||||
(byte()) bordercolor((byte) bordercolor::color)
|
||||
bordercolor: scope:[bordercolor] from MakeNiceScreen::@3
|
||||
[175] *((const nomodify byte*) CONIO_BORDERCOLOR) ← (const nomodify byte) COLOR_BLACK
|
||||
to:bordercolor::@return
|
||||
bordercolor::@return: scope:[bordercolor] from bordercolor
|
||||
[176] return
|
||||
to:@return
|
||||
|
||||
(byte()) textcolor((byte) textcolor::color)
|
||||
textcolor: scope:[textcolor] from MakeNiceScreen
|
||||
[177] phi()
|
||||
to:textcolor::@return
|
||||
textcolor::@return: scope:[textcolor] from textcolor
|
||||
[178] return
|
||||
to:@return
|
||||
|
||||
(void()) screensize((byte*) screensize::x , (byte*) screensize::y)
|
||||
screensize: scope:[screensize] from main
|
||||
[179] *((const byte*) screensize::x#0) ← (const nomodify byte) CONIO_WIDTH
|
||||
[180] *((const byte*) screensize::y#0) ← (const nomodify byte) CONIO_HEIGHT
|
||||
to:screensize::@return
|
||||
screensize::@return: scope:[screensize] from screensize
|
||||
[181] return
|
||||
to:@return
|
8232
src/test/ref/examples/conio/nacht-screen.log
Normal file
8232
src/test/ref/examples/conio/nacht-screen.log
Normal file
File diff suppressed because one or more lines are too long
293
src/test/ref/examples/conio/nacht-screen.sym
Normal file
293
src/test/ref/examples/conio/nacht-screen.sym
Normal file
@ -0,0 +1,293 @@
|
||||
(const byte*) $0::Msg[(number) $28] = { fill( $28, 0) }
|
||||
(byte) $0::Y
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte) CH_HLINE = (byte) $40
|
||||
(const nomodify byte) CH_LLCORNER = (byte) $6d
|
||||
(const nomodify byte) CH_LRCORNER = (byte) $7d
|
||||
(const nomodify byte) CH_LTEE = (byte) $6b
|
||||
(const nomodify byte) CH_RTEE = (byte) $73
|
||||
(const nomodify byte) CH_ULCORNER = (byte) $70
|
||||
(const nomodify byte) CH_URCORNER = (byte) $6e
|
||||
(const nomodify byte) CH_VLINE = (byte) $5d
|
||||
(const nomodify byte) COLOR_BLACK = (byte) 0
|
||||
(const nomodify byte) COLOR_GRAY3 = (byte) $f
|
||||
(const nomodify byte*) CONIO_BGCOLOR = (byte*) 53281
|
||||
(const nomodify byte*) CONIO_BORDERCOLOR = (byte*) 53280
|
||||
(const nomodify byte*) CONIO_CIA1_PORT_A = (byte*) 56320
|
||||
(const nomodify byte*) CONIO_CIA1_PORT_B = (byte*) 56321
|
||||
(const nomodify byte) CONIO_HEIGHT = (byte) $19
|
||||
(const nomodify byte*) CONIO_SCREEN_COLORS = (byte*) 55296
|
||||
(const nomodify byte*) CONIO_SCREEN_TEXT = (byte*) 1024
|
||||
(const nomodify byte) CONIO_WIDTH = (byte) $28
|
||||
(void()) MakeNiceScreen()
|
||||
(word~) MakeNiceScreen::$21 zp[2]:11 1001.0
|
||||
(byte~) MakeNiceScreen::$22 reg byte a 2002.0
|
||||
(byte~) MakeNiceScreen::$23 reg byte a 2002.0
|
||||
(label) MakeNiceScreen::@1
|
||||
(label) MakeNiceScreen::@10
|
||||
(label) MakeNiceScreen::@11
|
||||
(label) MakeNiceScreen::@12
|
||||
(label) MakeNiceScreen::@13
|
||||
(label) MakeNiceScreen::@14
|
||||
(label) MakeNiceScreen::@15
|
||||
(label) MakeNiceScreen::@16
|
||||
(label) MakeNiceScreen::@17
|
||||
(label) MakeNiceScreen::@18
|
||||
(label) MakeNiceScreen::@2
|
||||
(label) MakeNiceScreen::@3
|
||||
(label) MakeNiceScreen::@4
|
||||
(label) MakeNiceScreen::@5
|
||||
(label) MakeNiceScreen::@6
|
||||
(label) MakeNiceScreen::@7
|
||||
(label) MakeNiceScreen::@8
|
||||
(label) MakeNiceScreen::@9
|
||||
(label) MakeNiceScreen::@return
|
||||
(byte) MakeNiceScreen::I
|
||||
(byte) MakeNiceScreen::I#2 I zp[1]:2 2002.0
|
||||
(byte) MakeNiceScreen::I#3 I zp[1]:2 214.5
|
||||
(to_nomodify struct $0*) MakeNiceScreen::T
|
||||
(to_nomodify struct $0*) MakeNiceScreen::T#2 T zp[2]:3 1001.0
|
||||
(to_nomodify struct $0*) MakeNiceScreen::T#3 T zp[2]:3 154.0
|
||||
(const struct $0*) MakeNiceScreen::Text[] = { { Y: (byte) 2, Msg: (byte*) "Wolfgang Amadeus Mozart" }, { Y: (byte) 4, Msg: (byte*) ""Eine kleine Nachtmusik"" }, { Y: (byte) 5, Msg: (byte*) "(KV 525)" }, { Y: (byte) 9, Msg: (byte*) "Ported to the SID in 1987 by" }, { Y: (byte) $b, Msg: (byte*) "Joachim von Bassewitz" }, { Y: (byte) $c, Msg: (byte*) "(joachim@von-bassewitz.de)" }, { Y: (byte) $d, Msg: (byte*) "and" }, { Y: (byte) $e, Msg: (byte*) "Ullrich von Bassewitz" }, { Y: (byte) $f, Msg: (byte*) "(ullrich@von-bassewitz.de)" }, { Y: (byte) $12, Msg: (byte*) "C Implementation by" }, { Y: (byte) $13, Msg: (byte*) "Ullrich von Bassewitz" }, { Y: (byte) $17, Msg: (byte*) "Press any key to quit..." } }
|
||||
(byte) MakeNiceScreen::X
|
||||
(byte) MakeNiceScreen::X#1 reg byte x 1001.0
|
||||
(void()) MakeTeeLine((byte) MakeTeeLine::Y)
|
||||
(label) MakeTeeLine::@1
|
||||
(label) MakeTeeLine::@2
|
||||
(label) MakeTeeLine::@return
|
||||
(byte) MakeTeeLine::Y
|
||||
(byte) MakeTeeLine::Y#2 reg byte a 1001.0
|
||||
(const nomodify byte*) VIC_MEMORY = (byte*) 53272
|
||||
(volatile byte) XSize loadstore zp[1]:15 39.101694915254235
|
||||
(volatile byte) YSize loadstore zp[1]:16 20.0
|
||||
(byte()) bgcolor((byte) bgcolor::color)
|
||||
(label) bgcolor::@return
|
||||
(byte) bgcolor::color
|
||||
(byte) bgcolor::old
|
||||
(byte) bgcolor::return
|
||||
(byte()) bordercolor((byte) bordercolor::color)
|
||||
(label) bordercolor::@return
|
||||
(byte) bordercolor::color
|
||||
(byte) bordercolor::old
|
||||
(byte) bordercolor::return
|
||||
(void()) chline((byte) chline::length)
|
||||
(label) chline::@1
|
||||
(label) chline::@2
|
||||
(label) chline::@3
|
||||
(label) chline::@return
|
||||
(byte) chline::i
|
||||
(byte) chline::i#1 i zp[1]:14 200002.0
|
||||
(byte) chline::i#2 i zp[1]:14 75000.75
|
||||
(byte) chline::length
|
||||
(byte) chline::length#0 length zp[1]:13 2002.0
|
||||
(byte) chline::length#1 length zp[1]:13 202.0
|
||||
(byte) chline::length#2 length zp[1]:13 202.0
|
||||
(byte) chline::length#4 length zp[1]:13 16867.333333333332
|
||||
(void()) clrscr()
|
||||
(label) clrscr::@1
|
||||
(label) clrscr::@2
|
||||
(label) clrscr::@3
|
||||
(label) clrscr::@4
|
||||
(label) clrscr::@return
|
||||
(byte) clrscr::c
|
||||
(byte) clrscr::c#1 reg byte y 200002.0
|
||||
(byte) clrscr::c#2 reg byte y 125001.25
|
||||
(byte) clrscr::l
|
||||
(byte) clrscr::l#1 reg byte x 20002.0
|
||||
(byte) clrscr::l#2 reg byte x 3333.6666666666665
|
||||
(byte*) clrscr::line_cols
|
||||
(byte*) clrscr::line_cols#1 line_cols zp[2]:11 10001.0
|
||||
(byte*) clrscr::line_cols#5 line_cols zp[2]:11 15000.375
|
||||
(byte*) clrscr::line_text
|
||||
(byte*) clrscr::line_text#1 line_text zp[2]:3 6667.333333333333
|
||||
(byte*) clrscr::line_text#5 line_text zp[2]:3 17143.285714285714
|
||||
(byte*) conio_cursor_color
|
||||
(byte*) conio_cursor_color#13 conio_cursor_color zp[2]:8 4020000.5999999996
|
||||
(byte*) conio_cursor_color#3 conio_cursor_color zp[2]:8 5.218304813043478E7
|
||||
(byte*) conio_cursor_color#49 conio_cursor_color zp[2]:8 4.2042262E7
|
||||
(byte*) conio_cursor_color#51 conio_cursor_color zp[2]:8 1.7087550375E7
|
||||
(byte*) conio_cursor_color#6 conio_cursor_color zp[2]:8 6.0000000599999994E7
|
||||
(byte*) conio_cursor_text
|
||||
(byte*) conio_cursor_text#13 conio_cursor_text zp[2]:6 4020000.5999999996
|
||||
(byte*) conio_cursor_text#3 conio_cursor_text zp[2]:6 5.0008754458333336E7
|
||||
(byte*) conio_cursor_text#49 conio_cursor_text zp[2]:6 7.007043666666667E7
|
||||
(byte*) conio_cursor_text#51 conio_cursor_text zp[2]:6 1.7087550375E7
|
||||
(byte*) conio_cursor_text#6 conio_cursor_text zp[2]:6 4.285714328571428E7
|
||||
(byte) conio_cursor_x
|
||||
(byte) conio_cursor_x#14 conio_cursor_x zp[1]:10 4020000.5999999996
|
||||
(byte) conio_cursor_x#3 conio_cursor_x zp[1]:10 3.871677767741935E7
|
||||
(byte) conio_cursor_x#50 conio_cursor_x zp[1]:10 1.83685515E7
|
||||
(byte) conio_cursor_x#52 conio_cursor_x zp[1]:10 1.2920883666666668E7
|
||||
(byte) conio_cursor_x#6 conio_cursor_x zp[1]:10 1.500000015E8
|
||||
(byte) conio_cursor_y
|
||||
(byte) conio_cursor_y#13 conio_cursor_y zp[1]:5 4020000.5999999996
|
||||
(byte) conio_cursor_y#3 conio_cursor_y zp[1]:5 4.000733693333334E7
|
||||
(byte) conio_cursor_y#48 conio_cursor_y zp[1]:5 3.8776413875E7
|
||||
(byte) conio_cursor_y#52 conio_cursor_y zp[1]:5 1.7087550375E7
|
||||
(byte) conio_cursor_y#6 conio_cursor_y zp[1]:5 1.500000015E8
|
||||
(byte) conio_display_cursor
|
||||
(byte) conio_textcolor
|
||||
(void()) cputc((byte) cputc::c)
|
||||
(label) cputc::@1
|
||||
(label) cputc::@2
|
||||
(label) cputc::@3
|
||||
(label) cputc::@4
|
||||
(label) cputc::@return
|
||||
(byte) cputc::c
|
||||
(byte) cputc::c#0 reg byte a 20002.0
|
||||
(byte) cputc::c#1 reg byte a 2.0000002E7
|
||||
(byte) cputc::c#8 reg byte a 1.05005002E8
|
||||
(void()) cputcxy((byte) cputcxy::x , (byte) cputcxy::y , (byte) cputcxy::c)
|
||||
(label) cputcxy::@1
|
||||
(label) cputcxy::@return
|
||||
(byte) cputcxy::c
|
||||
(byte) cputcxy::c#2 reg byte y 3333.6666666666665
|
||||
(byte) cputcxy::x
|
||||
(byte) cputcxy::y
|
||||
(byte) cputcxy::y#0 reg byte a 2002.0
|
||||
(byte) cputcxy::y#2 reg byte a 11002.0
|
||||
(void()) cputs((to_nomodify byte*) cputs::s)
|
||||
(label) cputs::@1
|
||||
(label) cputs::@2
|
||||
(label) cputs::@return
|
||||
(byte) cputs::c
|
||||
(byte) cputs::c#1 reg byte a 1.0000001E7
|
||||
(to_nomodify byte*) cputs::s
|
||||
(to_nomodify byte*) cputs::s#0 s zp[2]:11 5000000.5
|
||||
(to_nomodify byte*) cputs::s#1 s zp[2]:11 55001.0
|
||||
(to_nomodify byte*) cputs::s#2 s zp[2]:11 1.5050002E7
|
||||
(void()) cputsxy((byte) cputsxy::x , (byte) cputsxy::y , (to_nomodify byte*) cputsxy::s)
|
||||
(label) cputsxy::@1
|
||||
(label) cputsxy::@return
|
||||
(to_nomodify byte*) cputsxy::s
|
||||
(to_nomodify byte*) cputsxy::s#0 s zp[2]:11 1833.6666666666665
|
||||
(byte) cputsxy::x
|
||||
(byte) cputsxy::x#0 reg byte x 5501.0
|
||||
(byte) cputsxy::y
|
||||
(byte) cputsxy::y#0 reg byte a 5501.0
|
||||
(byte()) cursor((byte) cursor::onoff)
|
||||
(label) cursor::@return
|
||||
(byte) cursor::old
|
||||
(byte) cursor::onoff
|
||||
(byte) cursor::return
|
||||
(void()) cvline((byte) cvline::length)
|
||||
(label) cvline::@1
|
||||
(label) cvline::@2
|
||||
(label) cvline::@3
|
||||
(label) cvline::@4
|
||||
(label) cvline::@return
|
||||
(byte) cvline::i
|
||||
(byte) cvline::i#1 i zp[1]:13 200002.0
|
||||
(byte) cvline::i#2 i zp[1]:13 37500.375
|
||||
(byte) cvline::length
|
||||
(const byte) cvline::length#0 length = (byte) $17
|
||||
(byte) cvline::x
|
||||
(byte) cvline::x#0 x zp[1]:19 10000.181818181818
|
||||
(byte) cvline::y
|
||||
(byte) cvline::y#0 y zp[1]:14 20002.0
|
||||
(byte) cvline::y#1 y zp[1]:14 60000.600000000006
|
||||
(byte) cvline::y#2 y zp[1]:14 52500.75
|
||||
(void()) cvlinexy((byte) cvlinexy::x , (byte) cvlinexy::y , (byte) cvlinexy::length)
|
||||
(label) cvlinexy::@1
|
||||
(label) cvlinexy::@return
|
||||
(byte) cvlinexy::length
|
||||
(byte) cvlinexy::x
|
||||
(byte) cvlinexy::x#1 reg byte x 202.0
|
||||
(byte) cvlinexy::x#2 reg byte x 1102.0
|
||||
(byte) cvlinexy::y
|
||||
(void()) gotoxy((byte) gotoxy::x , (byte) gotoxy::y)
|
||||
(word~) gotoxy::$10 zp[2]:8 2.000000002E9
|
||||
(word~) gotoxy::$4 zp[2]:8 1.5000000015E9
|
||||
(word~) gotoxy::$5 zp[2]:8 2.000000002E9
|
||||
(word~) gotoxy::$9 zp[2]:17 2.000000002E9
|
||||
(label) gotoxy::@1
|
||||
(label) gotoxy::@2
|
||||
(label) gotoxy::@3
|
||||
(label) gotoxy::@4
|
||||
(label) gotoxy::@return
|
||||
(word) gotoxy::offset
|
||||
(word) gotoxy::offset#0 offset zp[2]:8 1.5000000015E9
|
||||
(byte) gotoxy::x
|
||||
(byte) gotoxy::x#10 reg byte x 3.0000000029999995E8
|
||||
(byte) gotoxy::x#4 reg byte x 10001.0
|
||||
(byte) gotoxy::x#5 reg byte x 100001.0
|
||||
(byte) gotoxy::x#6 reg byte x 2002.0
|
||||
(byte) gotoxy::x#7 reg byte x 6.667036683333334E8
|
||||
(byte) gotoxy::y
|
||||
(byte) gotoxy::y#1 reg byte a 2.00000002E8
|
||||
(byte) gotoxy::y#10 reg byte a 3.50020001E8
|
||||
(byte) gotoxy::y#3 reg byte a 20002.0
|
||||
(byte) gotoxy::y#4 reg byte a 20002.0
|
||||
(byte) gotoxy::y#5 reg byte a 200002.0
|
||||
(byte) gotoxy::y#8 reg byte a 6.666666673333334E8
|
||||
(byte()) kbhit()
|
||||
(label) kbhit::@return
|
||||
(byte) kbhit::return
|
||||
(byte) kbhit::return#0 reg byte a 367.33333333333337
|
||||
(byte) kbhit::return#2 reg byte a 202.0
|
||||
(void()) main()
|
||||
(byte~) main::$3 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@return
|
||||
(void()) screensize((byte*) screensize::x , (byte*) screensize::y)
|
||||
(label) screensize::@return
|
||||
(byte*) screensize::x
|
||||
(const byte*) screensize::x#0 x = &(volatile byte) XSize
|
||||
(byte*) screensize::y
|
||||
(const byte*) screensize::y#0 y = &(volatile byte) YSize
|
||||
(word()) strlen((byte*) strlen::str)
|
||||
(label) strlen::@1
|
||||
(label) strlen::@2
|
||||
(label) strlen::@return
|
||||
(word) strlen::len
|
||||
(word) strlen::len#1 len zp[2]:11 1000001.0
|
||||
(word) strlen::len#2 len zp[2]:11 500250.75
|
||||
(word) strlen::return
|
||||
(word) strlen::return#2 return zp[2]:11 2002.0
|
||||
(byte*) strlen::str
|
||||
(byte*) strlen::str#0 str zp[2]:17 2000002.0
|
||||
(byte*) strlen::str#1 str zp[2]:17 5501.0
|
||||
(byte*) strlen::str#2 str zp[2]:17 1003334.6666666667
|
||||
(byte()) textcolor((byte) textcolor::color)
|
||||
(label) textcolor::@return
|
||||
(byte) textcolor::color
|
||||
(byte) textcolor::old
|
||||
(byte) textcolor::return
|
||||
|
||||
reg byte x [ clrscr::l#2 clrscr::l#1 ]
|
||||
reg byte y [ clrscr::c#2 clrscr::c#1 ]
|
||||
zp[1]:2 [ MakeNiceScreen::I#3 MakeNiceScreen::I#2 ]
|
||||
zp[2]:3 [ MakeNiceScreen::T#3 MakeNiceScreen::T#2 clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
reg byte a [ cputc::c#8 cputc::c#0 cputc::c#1 ]
|
||||
zp[1]:5 [ conio_cursor_y#48 conio_cursor_y#13 conio_cursor_y#3 conio_cursor_y#52 conio_cursor_y#6 ]
|
||||
zp[2]:6 [ conio_cursor_text#49 conio_cursor_text#13 conio_cursor_text#3 conio_cursor_text#51 conio_cursor_text#6 ]
|
||||
zp[2]:8 [ conio_cursor_color#49 conio_cursor_color#13 conio_cursor_color#3 conio_cursor_color#51 conio_cursor_color#6 gotoxy::offset#0 gotoxy::$5 gotoxy::$4 gotoxy::$10 ]
|
||||
zp[1]:10 [ conio_cursor_x#50 conio_cursor_x#14 conio_cursor_x#3 conio_cursor_x#52 conio_cursor_x#6 ]
|
||||
reg byte x [ gotoxy::x#10 gotoxy::x#7 gotoxy::x#4 gotoxy::x#5 gotoxy::x#6 ]
|
||||
reg byte a [ gotoxy::y#8 gotoxy::y#10 gotoxy::y#1 gotoxy::y#3 gotoxy::y#4 gotoxy::y#5 ]
|
||||
zp[2]:11 [ strlen::len#2 strlen::len#1 strlen::return#2 MakeNiceScreen::$21 cputs::s#2 cputs::s#1 cputs::s#0 cputsxy::s#0 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
reg byte a [ MakeTeeLine::Y#2 ]
|
||||
reg byte a [ cputcxy::y#2 cputcxy::y#0 ]
|
||||
reg byte y [ cputcxy::c#2 ]
|
||||
reg byte x [ cvlinexy::x#2 cvlinexy::x#1 ]
|
||||
zp[1]:13 [ cvline::i#2 cvline::i#1 chline::length#4 chline::length#1 chline::length#2 chline::length#0 ]
|
||||
zp[1]:14 [ cvline::y#2 cvline::y#0 cvline::y#1 chline::i#2 chline::i#1 ]
|
||||
zp[1]:15 [ XSize ]
|
||||
zp[1]:16 [ YSize ]
|
||||
reg byte a [ kbhit::return#2 ]
|
||||
reg byte a [ main::$3 ]
|
||||
reg byte a [ kbhit::return#0 ]
|
||||
reg byte a [ MakeNiceScreen::$22 ]
|
||||
reg byte a [ MakeNiceScreen::$23 ]
|
||||
reg byte x [ MakeNiceScreen::X#1 ]
|
||||
reg byte x [ cputsxy::x#0 ]
|
||||
reg byte a [ cputsxy::y#0 ]
|
||||
reg byte a [ cputs::c#1 ]
|
||||
zp[2]:17 [ gotoxy::$9 strlen::str#2 strlen::str#1 strlen::str#0 ]
|
||||
zp[1]:19 [ cvline::x#0 ]
|
@ -5,19 +5,20 @@ Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) menu::@7
|
||||
Culled Empty Block (label) menu::@3
|
||||
Culled Empty Block (label) menu::@8
|
||||
@ -25,7 +26,7 @@ Culled Empty Block (label) menu::@10
|
||||
Culled Empty Block (label) menu::@12
|
||||
Culled Empty Block (label) menu::@14
|
||||
Culled Empty Block (label) menu::@15
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) pressed::@5
|
||||
Culled Empty Block (label) pressed::@3
|
||||
Culled Empty Block (label) pressed::@6
|
||||
@ -36,7 +37,7 @@ Culled Empty Block (label) pressed::@9
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@14
|
||||
to:@15
|
||||
|
||||
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
|
||||
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
|
||||
@ -77,7 +78,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @14
|
||||
main: scope:[main] from @15
|
||||
*((const nomodify byte*) BORDERCOL) ← (const nomodify byte) GREEN
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@7
|
||||
@ -176,16 +177,16 @@ pressed::@10: scope:[pressed] from pressed::@2
|
||||
pressed::@return: scope:[pressed] from pressed::@1 pressed::@10
|
||||
return
|
||||
to:@return
|
||||
@14: scope:[] from @begin
|
||||
@15: scope:[] from @begin
|
||||
call main
|
||||
to:@15
|
||||
@15: scope:[] from @14
|
||||
to:@16
|
||||
@16: scope:[] from @15
|
||||
to:@end
|
||||
@end: scope:[] from @15
|
||||
@end: scope:[] from @16
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @14
|
||||
(label) @15
|
||||
(label) @16
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL = (byte*)(number) $d021
|
||||
@ -355,8 +356,8 @@ Constant inlined keyboard_key_pressed::key#2 = (const nomodify byte) KEY_E
|
||||
Constant inlined keyboard_key_pressed::key#3 = (const nomodify byte) KEY_SPACE
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @14
|
||||
Adding NOP phi() at start of @15
|
||||
Adding NOP phi() at start of @16
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -379,13 +380,13 @@ Calls in [pressed] to keyboard_key_pressed:51
|
||||
|
||||
Created 1 initial phi equivalence classes
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) menu::@1
|
||||
Culled Empty Block (label) menu::@18
|
||||
Culled Empty Block (label) pressed::@1
|
||||
Renumbering block @14 to @1
|
||||
Renumbering block @15 to @1
|
||||
Renumbering block keyboard_key_pressed::@2 to keyboard_key_pressed::@1
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block menu::@2 to menu::@1
|
||||
|
@ -15,23 +15,24 @@ Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) memset::@7
|
||||
Culled Empty Block (label) memset::@6
|
||||
Culled Empty Block (label) memset::@8
|
||||
Culled Empty Block (label) memset::@9
|
||||
Culled Empty Block (label) memset::@3
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) @17
|
||||
Culled Empty Block (label) mul8u::@5
|
||||
Culled Empty Block (label) mul8u::@6
|
||||
Culled Empty Block (label) mul8u::@8
|
||||
Culled Empty Block (label) mul8u::@9
|
||||
Culled Empty Block (label) @17
|
||||
Culled Empty Block (label) @18
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) @20
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @22
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@12
|
||||
@ -40,14 +41,14 @@ Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) main::@14
|
||||
Culled Empty Block (label) @22
|
||||
Culled Empty Block (label) init::toD0181_@1
|
||||
Culled Empty Block (label) @23
|
||||
Culled Empty Block (label) init::toD0181_@1
|
||||
Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) @25
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@25
|
||||
to:@26
|
||||
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
memset: scope:[memset] from init::@2 init::@3
|
||||
@ -143,7 +144,7 @@ mul8u::@return: scope:[mul8u] from mul8u::@3
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @25
|
||||
main: scope:[main] from @26
|
||||
call init
|
||||
to:main::@15
|
||||
main::@15: scope:[main] from main
|
||||
@ -303,16 +304,16 @@ draw_block::@1: scope:[draw_block] from draw_block
|
||||
draw_block::@return: scope:[draw_block] from draw_block::@1
|
||||
return
|
||||
to:@return
|
||||
@25: scope:[] from @begin
|
||||
@26: scope:[] from @begin
|
||||
call main
|
||||
to:@26
|
||||
@26: scope:[] from @25
|
||||
to:@27
|
||||
@27: scope:[] from @26
|
||||
to:@end
|
||||
@end: scope:[] from @26
|
||||
@end: scope:[] from @27
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @25
|
||||
(label) @26
|
||||
(label) @27
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL1 = (byte*)(number) $d021
|
||||
@ -852,8 +853,8 @@ if() condition always false - eliminating [1] if((word) $3e8<=(byte) 0) goto mem
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @25
|
||||
Adding NOP phi() at start of @26
|
||||
Adding NOP phi() at start of @27
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@15
|
||||
@ -884,7 +885,7 @@ Coalesced [64] mul8u::mb#6 ← mul8u::mb#1
|
||||
Coalesced (already) [65] mul8u::res#8 ← mul8u::res#2
|
||||
Coalesced [92] memset::dst#5 ← memset::dst#1
|
||||
Coalesced down to 8 phi equivalence classes
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) main::@15
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) mul8u::@3
|
||||
@ -892,7 +893,7 @@ Culled Empty Block (label) mul8u::@10
|
||||
Culled Empty Block (label) init::@4
|
||||
Culled Empty Block (label) init::toD0181_@return
|
||||
Culled Empty Block (label) memset::@1
|
||||
Renumbering block @25 to @1
|
||||
Renumbering block @26 to @1
|
||||
Renumbering block memset::@2 to memset::@1
|
||||
Renumbering block memset::@4 to memset::@2
|
||||
Renumbering block memset::@5 to memset::@3
|
||||
|
@ -99,10 +99,10 @@ Culled Empty Block (label) @44
|
||||
Culled Empty Block (label) @45
|
||||
Culled Empty Block (label) @46
|
||||
Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @48
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @50
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) @52
|
||||
@ -121,6 +121,7 @@ Culled Empty Block (label) @64
|
||||
Culled Empty Block (label) @65
|
||||
Culled Empty Block (label) @66
|
||||
Culled Empty Block (label) @67
|
||||
Culled Empty Block (label) @68
|
||||
Culled Empty Block (label) main::fileEntry1_@1
|
||||
Culled Empty Block (label) main::fileEntry2_@1
|
||||
Culled Empty Block (label) main::@2
|
||||
@ -131,7 +132,7 @@ Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@12
|
||||
Culled Empty Block (label) @68
|
||||
Culled Empty Block (label) @69
|
||||
Culled Empty Block (label) initEntry::entryBufDisk1_@1
|
||||
Culled Empty Block (label) initEntry::entryBufEdit1_@1
|
||||
Culled Empty Block (label) initEntry::entryTsLen1_@1
|
||||
@ -145,7 +146,7 @@ Culled Empty Block (label) initEntry::entryBAddrLo1_@1
|
||||
Culled Empty Block (label) initEntry::entryBAddrHi1_@1
|
||||
Culled Empty Block (label) initEntry::entryTHi1_@1
|
||||
Culled Empty Block (label) initEntry::entryTLo1_@1
|
||||
Culled Empty Block (label) @69
|
||||
Culled Empty Block (label) @70
|
||||
Culled Empty Block (label) printEntry::entryBufDisk1_@1
|
||||
Culled Empty Block (label) printEntry::entryBufEdit1_@1
|
||||
Culled Empty Block (label) printEntry::entryTsLen1_@1
|
||||
@ -260,7 +261,7 @@ memset::@return: scope:[memset] from memset::@1
|
||||
(byte*) print_screen#0 ← (byte*)(number) $400
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@70
|
||||
to:@71
|
||||
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
print_str: scope:[print_str] from main::@20 main::@25 main::@28 main::@33 printEntry printEntry::@16 printEntry::@19 printEntry::@22 printEntry::@25 printEntry::@28 printEntry::@31 printEntry::@34 printEntry::@37 printEntry::@40 printEntry::@43 printEntry::@46 printEntry::@49
|
||||
@ -446,10 +447,10 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @70
|
||||
(byte*) print_char_cursor#205 ← phi( @70/(byte*) print_char_cursor#163 )
|
||||
(byte*) print_line_cursor#152 ← phi( @70/(byte*) print_line_cursor#82 )
|
||||
(byte*) print_screen#34 ← phi( @70/(byte*) print_screen#35 )
|
||||
main: scope:[main] from @71
|
||||
(byte*) print_char_cursor#205 ← phi( @71/(byte*) print_char_cursor#163 )
|
||||
(byte*) print_line_cursor#152 ← phi( @71/(byte*) print_line_cursor#82 )
|
||||
(byte*) print_screen#34 ← phi( @71/(byte*) print_screen#35 )
|
||||
call keyboard_init
|
||||
to:main::@15
|
||||
main::@15: scope:[main] from main
|
||||
@ -1680,24 +1681,24 @@ printEntry::@return: scope:[printEntry] from printEntry::@52
|
||||
(byte*) print_line_cursor#30 ← (byte*) print_line_cursor#61
|
||||
return
|
||||
to:@return
|
||||
@70: scope:[] from @18
|
||||
@71: scope:[] from @18
|
||||
(byte*) print_screen#35 ← phi( @18/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#163 ← phi( @18/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#82 ← phi( @18/(byte*) print_line_cursor#0 )
|
||||
call main
|
||||
to:@71
|
||||
@71: scope:[] from @70
|
||||
(byte*) print_char_cursor#141 ← phi( @70/(byte*) print_char_cursor#30 )
|
||||
(byte*) print_line_cursor#62 ← phi( @70/(byte*) print_line_cursor#16 )
|
||||
to:@72
|
||||
@72: scope:[] from @71
|
||||
(byte*) print_char_cursor#141 ← phi( @71/(byte*) print_char_cursor#30 )
|
||||
(byte*) print_line_cursor#62 ← phi( @71/(byte*) print_line_cursor#16 )
|
||||
(byte*) print_line_cursor#31 ← (byte*) print_line_cursor#62
|
||||
(byte*) print_char_cursor#71 ← (byte*) print_char_cursor#141
|
||||
to:@end
|
||||
@end: scope:[] from @71
|
||||
@end: scope:[] from @72
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @18
|
||||
(label) @70
|
||||
(label) @71
|
||||
(label) @72
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) CIA1_PORT_A = (byte*)(number) $dc00
|
||||
@ -3777,8 +3778,8 @@ Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4)
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @18
|
||||
Adding NOP phi() at start of @70
|
||||
Adding NOP phi() at start of @71
|
||||
Adding NOP phi() at start of @72
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@15
|
||||
@ -3979,7 +3980,7 @@ Coalesced [367] mul8u::mb#6 ← mul8u::mb#1
|
||||
Coalesced (already) [368] mul8u::res#8 ← mul8u::res#2
|
||||
Coalesced down to 14 phi equivalence classes
|
||||
Culled Empty Block (label) @18
|
||||
Culled Empty Block (label) @71
|
||||
Culled Empty Block (label) @72
|
||||
Culled Empty Block (label) main::@15
|
||||
Culled Empty Block (label) main::fileEntry1_@return
|
||||
Culled Empty Block (label) main::@13
|
||||
@ -4035,7 +4036,7 @@ Culled Empty Block (label) initEntry::entryTHi1_@return
|
||||
Culled Empty Block (label) initEntry::entryTLo1_@return
|
||||
Culled Empty Block (label) mul8u::@3
|
||||
Culled Empty Block (label) mul8u::@10
|
||||
Renumbering block @70 to @1
|
||||
Renumbering block @71 to @1
|
||||
Renumbering block mul8u::@4 to mul8u::@3
|
||||
Renumbering block mul8u::@7 to mul8u::@4
|
||||
Renumbering block memset::@4 to memset::@1
|
||||
|
@ -4,14 +4,15 @@ Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) main::@3
|
||||
@ -22,7 +23,7 @@ Culled Empty Block (label) main::@12
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@12
|
||||
to:@13
|
||||
|
||||
(void()) keyboard_init()
|
||||
keyboard_init: scope:[keyboard_init] from main
|
||||
@ -72,7 +73,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @12
|
||||
main: scope:[main] from @13
|
||||
call keyboard_init
|
||||
to:main::@13
|
||||
main::@13: scope:[main] from main
|
||||
@ -104,16 +105,16 @@ main::@6: scope:[main] from main::@14
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @begin
|
||||
@13: scope:[] from @begin
|
||||
call main
|
||||
to:@13
|
||||
@13: scope:[] from @12
|
||||
to:@14
|
||||
@14: scope:[] from @13
|
||||
to:@end
|
||||
@end: scope:[] from @13
|
||||
@end: scope:[] from @14
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @12
|
||||
(label) @13
|
||||
(label) @14
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL = (byte*)(number) $d021
|
||||
@ -243,8 +244,8 @@ Consolidated array index constant in *(keyboard_matrix_row_bitmask+keyboard_key_
|
||||
Consolidated array index constant in *(keyboard_matrix_col_bitmask+keyboard_key_pressed::colidx#0)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @12
|
||||
Adding NOP phi() at start of @13
|
||||
Adding NOP phi() at start of @14
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@13
|
||||
@ -258,10 +259,10 @@ Calls in [keyboard_key_pressed] to keyboard_matrix_read:18
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) main::@13
|
||||
Culled Empty Block (label) main::@1
|
||||
Renumbering block @12 to @1
|
||||
Renumbering block @13 to @1
|
||||
Renumbering block keyboard_key_pressed::@2 to keyboard_key_pressed::@1
|
||||
Renumbering block main::@4 to main::@1
|
||||
Renumbering block main::@5 to main::@2
|
||||
|
@ -4,15 +4,16 @@ Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) keyboard_matrix_read::@1
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) keyboard_get_keycode::@1
|
||||
Culled Empty Block (label) keyboard_key_pressed::@1
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) keyboard_get_keycode::@1
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
@ -28,7 +29,7 @@ Culled Empty Block (label) main::@28
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@12
|
||||
to:@13
|
||||
|
||||
(void()) keyboard_init()
|
||||
keyboard_init: scope:[keyboard_init] from main::@3
|
||||
@ -89,7 +90,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @12
|
||||
main: scope:[main] from @13
|
||||
(byte*) main::sc#0 ← (byte*)(number) $400
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
@ -247,16 +248,16 @@ main::@26: scope:[main] from main::@21 main::@26
|
||||
main::@return: scope:[main] from main::@7
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @begin
|
||||
@13: scope:[] from @begin
|
||||
call main
|
||||
to:@13
|
||||
@13: scope:[] from @12
|
||||
to:@14
|
||||
@14: scope:[] from @13
|
||||
to:@end
|
||||
@end: scope:[] from @13
|
||||
@end: scope:[] from @14
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @12
|
||||
(label) @13
|
||||
(label) @14
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) CIA1_PORT_A = (byte*)(number) $dc00
|
||||
@ -647,8 +648,8 @@ Added new block during phi lifting main::@39(between main::@34 and main::@21)
|
||||
Added new block during phi lifting main::@40(between main::@21 and main::@26)
|
||||
Added new block during phi lifting main::@41(between main::@26 and main::@26)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @12
|
||||
Adding NOP phi() at start of @13
|
||||
Adding NOP phi() at start of @14
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
@ -677,7 +678,7 @@ Coalesced [62] main::col#6 ← main::col#1
|
||||
Coalesced [66] main::sc#4 ← main::sc#1
|
||||
Coalesced [70] keyboard_matrix_read::rowid#3 ← keyboard_matrix_read::rowid#0
|
||||
Coalesced down to 8 phi equivalence classes
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) main::@31
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@11
|
||||
@ -688,7 +689,7 @@ Culled Empty Block (label) main::@39
|
||||
Culled Empty Block (label) main::@38
|
||||
Culled Empty Block (label) main::@35
|
||||
Culled Empty Block (label) main::@36
|
||||
Renumbering block @12 to @1
|
||||
Renumbering block @13 to @1
|
||||
Renumbering block keyboard_key_pressed::@2 to keyboard_key_pressed::@1
|
||||
Renumbering block main::@10 to main::@4
|
||||
Renumbering block main::@12 to main::@5
|
||||
|
Loading…
x
Reference in New Issue
Block a user