1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-20 03:29:32 +00:00

Retired bitmap-draw.h and bitmap2.h. Introduced c64-bitmap.h instead.

This commit is contained in:
jespergravgaard 2021-02-04 08:53:47 +01:00
parent 4993a2cb4b
commit f9a1edc4cc
34 changed files with 24012 additions and 27141 deletions

View File

@ -18999,3 +18999,25 @@ bmi !+
lda #0
!:
sta {z1}+1
//FRAGMENT vwuz1=pbuc1_derefidx_vbuz2
ldy {z2}
lda {c1},y
sta {z1}
lda #0
sta {z1}+1
//FRAGMENT vwuz1=pbuc1_derefidx_vbuaa
tay
lda {c1},y
sta {z1}
lda #0
sta {z1}+1
//FRAGMENT vwuz1=pbuc1_derefidx_vbuxx
lda {c1},x
sta {z1}
lda #0
sta {z1}+1
//FRAGMENT vwuz1=pbuc1_derefidx_vbuyy
lda {c1},y
sta {z1}
lda #0
sta {z1}+1

View File

@ -1,13 +0,0 @@
// Plot and line drawing routines for HIRES bitmaps
// Currently it can only plot on the first 256 x-positions.
// Initialize the bitmap plotter tables for a specific bitmap
void bitmap_init(char* bitmap);
// Clear all graphics on the bitmap
void bitmap_clear();
void bitmap_plot(char x, char y);
// Draw a line on the bitmap
void bitmap_line(char x0, char x1, char y0, char y1);

View File

@ -1,6 +1,4 @@
// Simple single-color (320x200) bitmap routines
#include <string.h>
// Initialize bitmap plotting tables
void bitmap_init(char* gfx, char* screen);
@ -14,10 +12,3 @@ void bitmap_plot(unsigned int x, char y);
// Draw a line on the bitmap using bresenhams algorithm
void bitmap_line(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2);
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
unsigned int abs_u16(unsigned int w);
// Get the sign of a 16-bit unsigned number treated as a signed number.
// Returns unsigned -1 if the number is
unsigned int sgn_u16(unsigned int w);

View File

@ -1,147 +0,0 @@
// Plot and line drawing routines for HIRES bitmaps
// Currently it can only plot on the first 256 x-positions.
#include <bitmap-draw.h>
// Tables for the plotter - initialized by calling bitmap_draw_init();
const char bitmap_plot_xlo[256];
const char bitmap_plot_xhi[256];
const char bitmap_plot_ylo[256];
const char bitmap_plot_yhi[256];
const char bitmap_plot_bit[256];
// Initialize the bitmap plotter tables for a specific bitmap
void bitmap_init(char* bitmap) {
char bits = $80;
for(char x : 0..255) {
bitmap_plot_xlo[x] = x&$f8;
bitmap_plot_xhi[x] = >bitmap;
bitmap_plot_bit[x] = bits;
bits = bits>>1;
if(bits==0) {
bits = $80;
}
}
char* yoffs = $0;
for(char y : 0..255) {
bitmap_plot_ylo[y] = y&$7 | <yoffs;
bitmap_plot_yhi[y] = >yoffs;
if((y&$7)==7) {
yoffs = yoffs + 40*8;
}
}
}
// Clear all graphics on the bitmap
void bitmap_clear() {
char* bitmap = (char*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] };
for( char y: 0..39 ) {
for( char x: 0..199 ) {
*bitmap++ = 0;
}
}
}
void bitmap_plot(char x, char y) {
// Needs unsigned int arrays arranged as two underlying char arrays to allow char* plotter_x = plot_x[x]; - and eventually - char* plotter = plot_x[x] + plot_y[y];
unsigned int plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] };
unsigned int plotter_y = { bitmap_plot_yhi[y], bitmap_plot_ylo[y] };
char* plotter = plotter_x+plotter_y;
*plotter = *plotter | bitmap_plot_bit[x];
}
// Draw a line on the bitmap
void bitmap_line(char x0, char x1, char y0, char y1) {
char xd;
char yd;
if(x0<x1) {
xd = x1-x0;
if(y0<y1) {
yd = y1-y0;
if(yd<xd) {
bitmap_line_xdyi(x0, y0, x1, xd, yd);
} else {
bitmap_line_ydxi(y0, x0, y1, yd, xd);
}
} else {
yd = y0-y1;
if(yd<xd) {
bitmap_line_xdyd(x0, y0, x1, xd, yd);
} else {
bitmap_line_ydxd(y1, x1, y0, yd, xd);
}
}
} else {
xd = x0-x1;
if(y0<y1) {
yd = y1-y0;
if(yd<xd) {
bitmap_line_xdyd(x1, y1, x0, xd, yd);
} else {
bitmap_line_ydxd(y0, x0, y1, yd, xd);
}
} else {
yd = y0-y1;
if(yd<xd) {
bitmap_line_xdyi(x1, y1, x0, xd, yd);
} else {
bitmap_line_ydxi(y1, x1, y0, yd, xd);
}
}
}
}
void bitmap_line_xdyi(char x, char y, char x1, char xd, char yd) {
char e = yd>>1;
do {
bitmap_plot(x,y);
x++;
e = e+yd;
if(xd<e) {
y++;
e = e - xd;
}
} while (x!=(x1+1));
}
void bitmap_line_xdyd(char x, char y, char x1, char xd, char yd) {
char e = yd>>1;
do {
bitmap_plot(x,y);
x++;
e = e+yd;
if(xd<e) {
y--;
e = e - xd;
}
} while (x!=(x1+1));
}
void bitmap_line_ydxi(char y, char x, char y1, char yd, char xd) {
char e = xd>>1;
do {
bitmap_plot(x,y);
y++;
e = e+xd;
if(yd<e) {
x++;
e = e - yd;
}
} while (y!=(y1+1));
}
void bitmap_line_ydxd(char y, char x, char y1, char yd, char xd) {
char e = xd>>1;
do {
bitmap_plot(x,y);
y = y++;
e = e+xd;
if(yd<e) {
x--;
e = e - yd;
}
} while (y!=(y1+1));
}

View File

@ -1,5 +1,5 @@
// Simple single-color (320x200) bitmap routines
#include <bitmap2.h>
#include <c64-bitmap.h>
#include <string.h>
// The adddress of the bitmap screen (used for colors)

View File

@ -2,7 +2,7 @@
// Reported by Janne Johansson
#include <c64.h>
#include <bitmap-draw.h>
#include <c64-bitmap.h>
byte* const SCREEN = $400;
byte* const BITMAP = $2000;
@ -14,11 +14,11 @@ void main() {
*BG_COLOR = 0;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
bitmap_init(BITMAP);
bitmap_clear();
bitmap_init(BITMAP, SCREEN);
bitmap_clear(BLACK, WHITE);
init_screen();
do {
bitmap_line(0,next,0,100);
bitmap_line(0,0,next,100);
next++;
} while (true);
}

View File

@ -1,8 +1,8 @@
// Shows that bitmap2.kc line() does not have the same problem as bitmap-draw.kc
// Shows that c64-bitmap.kc line() does not have the same problem as bitmap-draw.kc
// See bitmap-line-anim-1.kc
#include <c64.h>
#include <bitmap2.h>
#include <c64-bitmap.h>
byte* const SCREEN = $400;
byte* const BITMAP = $2000;

View File

@ -1,7 +1,7 @@
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
// Plots simple plots
#include <c64.h>
#include <bitmap2.h>
#include <c64-bitmap.h>
byte* BITMAP = 0x2000;
byte* SCREEN = 0x0400;

View File

@ -3,7 +3,7 @@
#include <c64.h>
#include <sine.h>
#include <multiply.h>
#include <bitmap2.h>
#include <c64-bitmap.h>
byte* BITMAP = 0x2000;
byte* SCREEN = 0x0400;

View File

@ -3,7 +3,7 @@
#include <c64.h>
#include <sine.h>
#include <multiply.h>
#include <bitmap2.h>
#include <c64-bitmap.h>
byte* BITMAP = 0x2000;
byte* SCREEN = 0x0400;

View File

@ -1,7 +1,7 @@
// Tests the simple bitmap plotter
// Plots a few lines using the bresenham line algorithm
#include <c64.h>
#include <bitmap2.h>
#include <c64-bitmap.h>
#include <print.h>
byte* BITMAP = 0x2000;

View File

@ -2,7 +2,7 @@
#include <c64dtv.h>
#include <print.h>
#include <keyboard.h>
#include <bitmap-draw.h>
#include <c64-bitmap.h>
void main() {
asm { sei } // Disable normal interrupt (prevent keyboard reading glitches and allows to hide basic/kernal)
@ -485,13 +485,13 @@ void gfx_init_screen4() {
// Initialize VIC bitmap
void gfx_init_VICII_bitmap() {
// Draw some lines on the bitmap
bitmap_init(VICII_BITMAP);
bitmap_clear();
bitmap_init(VICII_BITMAP, VICII_SCREEN0);
bitmap_clear(BLACK, WHITE);
byte lines_x[] = { $00, $ff, $ff, $00, $00, $80, $ff, $80, $00, $80 };
byte lines_y[] = { $00, $00, $c7, $c7, $00, $00, $64, $c7, $64, $00 };
byte lines_cnt = 9;
for(byte l=0; l<lines_cnt;l++) {
bitmap_line(lines_x[l], lines_x[l+1], lines_y[l], lines_y[l+1]);
bitmap_line(lines_x[l], lines_y[l], lines_x[l+1], lines_y[l+1]);
}
}

View File

@ -2,7 +2,7 @@
#include <c64dtv.h>
#include <print.h>
#include <keyboard.h>
#include <bitmap-draw.h>
#include <c64-bitmap.h>
void main() {
asm { sei } // Disable normal interrupt (prevent keyboard reading glitches and allows to hide basic/kernal)
@ -366,6 +366,9 @@ void mode_stdbitmap() {
// Screen colors
*BG_COLOR = BLACK;
*BORDER_COLOR = BLACK;
// Draw some lines on the bitmap
bitmap_init(BITMAP, SCREEN);
bitmap_clear(BLACK, WHITE);
// Bitmap Colors
byte* ch=SCREEN;
for(byte cy: 0..24 ) {
@ -375,14 +378,11 @@ void mode_stdbitmap() {
*ch++ = col*$10 | col2;
}
}
// Draw some lines on the bitmap
bitmap_init(BITMAP);
bitmap_clear();
byte lines_x[] = { $00, $ff, $ff, $00, $00, $80, $ff, $80, $00, $80 };
byte lines_y[] = { $00, $00, $c7, $c7, $00, $00, $64, $c7, $64, $00 };
byte lines_cnt = 9;
for(byte l=0; l<lines_cnt;l++) {
bitmap_line(lines_x[l], lines_x[l+1], lines_y[l], lines_y[l+1]);
bitmap_line(lines_x[l], lines_y[l], lines_x[l+1], lines_y[l+1]);
}
// Leave control to the user until exit
mode_ctrl();

View File

@ -1,20 +1,20 @@
#include <c64.h>
#include <bitmap-draw.h>
#include <c64-bitmap.h>
char* const SCREEN = $400;
char* const BITMAP = $2000;
char lines_x[] = { 60, 80, 110, 80, 60, 40, 10, 40, 60 };
char lines_y[] = { 10, 40, 60, 80, 110, 80, 60, 40, 10 };
char lines_cnt = 8;
const char LINES = 8;
char lines_x[LINES+1] = { 60, 80, 110, 80, 60, 40, 10, 40, 60 };
char lines_y[LINES+1] = { 10, 40, 60, 80, 110, 80, 60, 40, 10 };
void main() {
VICII->BORDER_COLOR = 0;
VICII->BG_COLOR = 0;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_MEMORY = (char)((((unsigned int)SCREEN&$3fff)/$40)|(((unsigned int)BITMAP&$3fff)/$400));
bitmap_init(BITMAP);
bitmap_clear();
bitmap_init(BITMAP, SCREEN);
bitmap_clear(BLACK, WHITE);
init_screen();
do {
lines();
@ -22,8 +22,8 @@ void main() {
}
void lines() {
for(char l=0; l<lines_cnt;l++) {
bitmap_line(lines_x[l], lines_x[l+1], lines_y[l], lines_y[l+1]);
for(char l=0; l<LINES;l++) {
bitmap_line(lines_x[l], lines_y[l], lines_x[l+1], lines_y[l+1]);
}
}

View File

@ -3,7 +3,7 @@
#include <c64.h>
#include <sine.h>
#include <string.h>
#include <bitmap2.h>
#include <c64-bitmap.h>
char* SCREEN = $400;
char* BITMAP = $2000;

View File

@ -68,10 +68,6 @@ export char SPRITE_PIXELS[] = kickasm(resource "ship.png") {{
#pragma data_seg(Data)
void main() {
vera_layer_set_text_color_mode( 1, VERA_LAYER_CONFIG_16C );

View File

@ -11,13 +11,14 @@
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const WHITE = 1
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label D011 = $d011
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.label next = 5
.label next = $10
.segment Code
main: {
// *BORDER_COLOR = 0
@ -31,65 +32,58 @@ main: {
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VICII_MEMORY
// bitmap_init(BITMAP)
// bitmap_init(BITMAP, SCREEN)
jsr bitmap_init
// bitmap_clear()
// bitmap_clear(BLACK, WHITE)
jsr bitmap_clear
// init_screen()
jsr init_screen
lda #0
sta.z next
__b1:
// bitmap_line(0,next,0,100)
// bitmap_line(0,0,next,100)
lda.z next
sta.z bitmap_line.x2
lda #0
sta.z bitmap_line.x2+1
jsr bitmap_line
// next++;
inc.z next
jmp __b1
}
// Initialize the bitmap plotter tables for a specific bitmap
// Initialize bitmap plotting tables
bitmap_init: {
.label __10 = 6
.label yoffs = 7
ldy #$80
.label __7 = $10
.label yoffs = 2
ldx #0
lda #$80
__b1:
// x&$f8
txa
and #$f8
// bitmap_plot_xlo[x] = x&$f8
sta bitmap_plot_xlo,x
// bitmap_plot_xhi[x] = >bitmap
lda #>BITMAP
sta bitmap_plot_xhi,x
// bitmap_plot_bit[x] = bits
tya
sta bitmap_plot_bit,x
// bits = bits>>1
tya
// bits >>= 1
lsr
tay
// if(bits==0)
cpy #0
cmp #0
bne __b2
ldy #$80
lda #$80
__b2:
// for(char x : 0..255)
inx
cpx #0
bne __b1
lda #<0
lda #<BITMAP
sta.z yoffs
lda #>BITMAP
sta.z yoffs+1
tax
ldx #0
__b3:
// y&$7
lda #7
sax.z __10
sax.z __7
// <yoffs
lda.z yoffs
// y&$7 | <yoffs
ora.z __10
ora.z __7
// bitmap_plot_ylo[y] = y&$7 | <yoffs
sta bitmap_plot_ylo,x
// >yoffs
@ -98,7 +92,7 @@ bitmap_init: {
sta bitmap_plot_yhi,x
// if((y&$7)==7)
lda #7
cmp.z __10
cmp.z __7
bne __b4
// yoffs = yoffs + 40*8
clc
@ -117,42 +111,37 @@ bitmap_init: {
rts
}
// Clear all graphics on the bitmap
// bgcol - the background color to fill the screen with
// fgcol - the foreground color to fill the screen with
bitmap_clear: {
.label bitmap = 7
.label y = 5
// bitmap = (char*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] }
lda bitmap_plot_xlo
sta.z bitmap
lda bitmap_plot_xhi
sta.z bitmap+1
lda #0
sta.z y
__b1:
.const col = WHITE*$10
// memset(bitmap_screen, col, 1000uw)
ldx #col
lda #<SCREEN
sta.z memset.str
lda #>SCREEN
sta.z memset.str+1
lda #<$3e8
sta.z memset.num
lda #>$3e8
sta.z memset.num+1
jsr memset
// memset(bitmap_gfx, 0, 8000uw)
ldx #0
__b2:
// *bitmap++ = 0
lda #0
tay
sta (bitmap),y
// *bitmap++ = 0;
inc.z bitmap
bne !+
inc.z bitmap+1
!:
// for( char x: 0..199 )
inx
cpx #$c8
bne __b2
// for( char y: 0..39 )
inc.z y
lda #$28
cmp.z y
bne __b1
lda #<BITMAP
sta.z memset.str
lda #>BITMAP
sta.z memset.str+1
lda #<$1f40
sta.z memset.num
lda #>$1f40
sta.z memset.num+1
jsr memset
// }
rts
}
init_screen: {
.label c = 7
.label c = 2
lda #<SCREEN
sta.z c
lda #>SCREEN
@ -179,263 +168,367 @@ init_screen: {
!:
jmp __b1
}
// Draw a line on the bitmap
// bitmap_line(byte register(A) x1)
// Draw a line on the bitmap using bresenhams algorithm
// bitmap_line(word zp($e) x2)
bitmap_line: {
.label x0 = 0
.label y0 = 0
.label y1 = $64
// if(x0<x1)
cmp #x0
beq !+
bcs __b1
!:
// xd = x0-x1
tax
// if(yd<xd)
cpx #y1
beq !+
bcs __b4
!:
// bitmap_line_ydxd(y0, x0, y1, yd, xd)
stx.z bitmap_line_ydxd.xd
jsr bitmap_line_ydxd
// }
rts
__b4:
// bitmap_line_xdyd(x1, y1, x0, xd, yd)
sta.z bitmap_line_xdyd.x
stx.z bitmap_line_xdyd.xd
jsr bitmap_line_xdyd
rts
.const x1 = 0
.const y1 = 0
.const y2 = $64
.label dx = $11
.label dy = $a
.label sx = $13
.label sy = $c
.label e1 = 4
.label e = 6
.label y = 2
.label x = 8
.label x2 = $e
// abs_u16(x2-x1)
lda.z x2
sta.z abs_u16.w
lda.z x2+1
sta.z abs_u16.w+1
jsr abs_u16
// abs_u16(x2-x1)
// dx = abs_u16(x2-x1)
lda.z abs_u16.return
sta.z dx
lda.z abs_u16.return+1
sta.z dx+1
// abs_u16(y2-y1)
lda #<y2
sta.z abs_u16.w
lda #>y2
sta.z abs_u16.w+1
jsr abs_u16
// abs_u16(y2-y1)
// dy = abs_u16(y2-y1)
// if(dx==0 && dy==0)
lda.z dx
ora.z dx+1
bne __b1
lda.z dy
ora.z dy+1
bne !__b4+
jmp __b4
!__b4:
__b1:
// xd = x1-x0
tax
// if(yd<xd)
cpx #y1
beq !+
bcs __b7
// sgn_u16(x2-x1)
lda.z x2
sta.z sgn_u16.w
lda.z x2+1
sta.z sgn_u16.w+1
jsr sgn_u16
// sgn_u16(x2-x1)
// sx = sgn_u16(x2-x1)
lda.z sgn_u16.return
sta.z sx
lda.z sgn_u16.return+1
sta.z sx+1
// sgn_u16(y2-y1)
lda #<y2
sta.z sgn_u16.w
lda #>y2
sta.z sgn_u16.w+1
jsr sgn_u16
// sgn_u16(y2-y1)
// sy = sgn_u16(y2-y1)
// if(dx > dy)
lda.z dy+1
cmp.z dx+1
bcc __b2
bne !+
lda.z dy
cmp.z dx
bcc __b2
!:
// bitmap_line_ydxi(y0, x0, y1, yd, xd)
stx.z bitmap_line_ydxi.xd
jsr bitmap_line_ydxi
rts
// e = dx/2
lda.z dx+1
lsr
sta.z e+1
lda.z dx
ror
sta.z e
lda #<y1
sta.z y
lda #>y1
sta.z y+1
lda #<x1
sta.z x
lda #>x1
sta.z x+1
__b6:
// bitmap_plot(x,(char)y)
lda.z y
tax
jsr bitmap_plot
// y += sy
lda.z y
clc
adc.z sy
sta.z y
lda.z y+1
adc.z sy+1
sta.z y+1
// e += dx
lda.z e
clc
adc.z dx
sta.z e
lda.z e+1
adc.z dx+1
sta.z e+1
// if(dy<e)
cmp.z dy+1
bne !+
lda.z e
cmp.z dy
beq __b7
!:
bcc __b7
// x += sx
lda.z x
clc
adc.z sx
sta.z x
lda.z x+1
adc.z sx+1
sta.z x+1
// e -= dy
lda.z e
sec
sbc.z dy
sta.z e
lda.z e+1
sbc.z dy+1
sta.z e+1
__b7:
// bitmap_line_xdyi(x0, y0, x1, xd, yd)
sta.z bitmap_line_xdyi.x1
stx.z bitmap_line_xdyi.xd
jsr bitmap_line_xdyi
// while (y != y2)
lda.z y+1
cmp #>y2
bne __b6
lda.z y
cmp #<y2
bne __b6
__b3:
// bitmap_plot(x,(char)y)
lda.z y
tax
jsr bitmap_plot
// }
rts
}
// bitmap_line_ydxd(byte zp(3) y, byte zp(2) x, byte zp(6) xd)
bitmap_line_ydxd: {
.label xd = 6
.label e = 4
.label y = 3
.label x = 2
// e = xd>>1
lda.z xd
__b2:
// e = dy/2
lda.z dy+1
lsr
sta.z e
lda #bitmap_line.y0
sta.z e1+1
lda.z dy
ror
sta.z e1
lda #<y1
sta.z y
lda #bitmap_line.x0
lda #>y1
sta.z y+1
lda #<x1
sta.z x
__b1:
// bitmap_plot(x,y)
ldx.z x
ldy.z y
lda #>x1
sta.z x+1
__b9:
// bitmap_plot(x,(char)y)
lda.z y
tax
jsr bitmap_plot
// y = y++;
inc.z y
// e = e+xd
lda.z e
// x += sx
lda.z x
clc
adc.z xd
sta.z e
// if(yd<e)
lda #bitmap_line.y1
cmp.z e
bcs __b2
// x--;
dec.z x
// e = e - yd
lax.z e
axs #bitmap_line.y1
stx.z e
__b2:
// while (y!=(y1+1))
lda #bitmap_line.y1+1
cmp.z y
bne __b1
// }
rts
}
// bitmap_line_xdyd(byte zp(2) x, byte zp(3) y, byte zp(6) xd)
bitmap_line_xdyd: {
.label x = 2
.label xd = 6
.label e = 4
.label y = 3
lda #bitmap_line.y1>>1
sta.z e
lda #bitmap_line.y1
sta.z y
__b1:
// bitmap_plot(x,y)
ldx.z x
ldy.z y
jsr bitmap_plot
// x++;
inc.z x
// e = e+yd
lax.z e
axs #-[bitmap_line.y1]
stx.z e
// if(xd<e)
lda.z xd
cmp.z e
bcs __b2
// y--;
dec.z y
// e = e - xd
txa
sec
sbc.z xd
sta.z e
__b2:
// while (x!=(x1+1))
lda #1
cmp.z x
bne __b1
// }
rts
}
// bitmap_line_ydxi(byte zp(3) y, byte zp(2) x, byte zp(6) xd)
bitmap_line_ydxi: {
.label xd = 6
.label e = 4
.label y = 3
.label x = 2
// e = xd>>1
lda.z xd
lsr
sta.z e
lda #bitmap_line.y0
sta.z y
lda #bitmap_line.x0
adc.z sx
sta.z x
__b1:
// bitmap_plot(x,y)
ldx.z x
ldy.z y
jsr bitmap_plot
// y++;
inc.z y
// e = e+xd
lda.z e
lda.z x+1
adc.z sx+1
sta.z x+1
// e += dy
lda.z e1
clc
adc.z xd
sta.z e
// if(yd<e)
lda #bitmap_line.y1
cmp.z e
bcs __b2
// x++;
inc.z x
// e = e - yd
lax.z e
axs #bitmap_line.y1
stx.z e
__b2:
// while (y!=(y1+1))
lda #bitmap_line.y1+1
cmp.z y
bne __b1
// }
rts
}
// bitmap_line_xdyi(byte zp(2) x, byte zp(3) y, byte zp(5) x1, byte zp(6) xd)
bitmap_line_xdyi: {
.label x1 = 5
.label xd = 6
.label x = 2
.label e = 4
.label y = 3
lda #bitmap_line.y1>>1
sta.z e
lda #bitmap_line.y0
adc.z dy
sta.z e1
lda.z e1+1
adc.z dy+1
sta.z e1+1
// if(dx < e)
cmp.z dx+1
bne !+
lda.z e1
cmp.z dx
beq __b10
!:
bcc __b10
// y += sy
lda.z y
clc
adc.z sy
sta.z y
lda #bitmap_line.x0
sta.z x
__b1:
// bitmap_plot(x,y)
ldx.z x
ldy.z y
jsr bitmap_plot
// x++;
inc.z x
// e = e+yd
lax.z e
axs #-[bitmap_line.y1]
stx.z e
// if(xd<e)
lda.z xd
cmp.z e
bcs __b2
// y++;
inc.z y
// e = e - xd
txa
lda.z y+1
adc.z sy+1
sta.z y+1
// e -= dx
lda.z e1
sec
sbc.z xd
sta.z e
sbc.z dx
sta.z e1
lda.z e1+1
sbc.z dx+1
sta.z e1+1
__b10:
// while (x != x2)
lda.z x+1
cmp.z x2+1
bne __b9
lda.z x
cmp.z x2
bne __b9
jmp __b3
__b4:
// bitmap_plot(x,(char)y)
lda #<x1
sta.z bitmap_plot.x
lda #>x1
sta.z bitmap_plot.x+1
ldx #0
jsr bitmap_plot
rts
}
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zp(8) str, byte register(X) c, word zp(6) num)
memset: {
.label end = 6
.label dst = 8
.label num = 6
.label str = 8
// if(num>0)
lda.z num
bne !+
lda.z num+1
beq __breturn
!:
// end = (char*)str + num
lda.z end
clc
adc.z str
sta.z end
lda.z end+1
adc.z str+1
sta.z end+1
__b2:
// x1+1
ldx.z x1
inx
// while (x!=(x1+1))
cpx.z x
// for(char* dst = str; dst!=end; dst++)
lda.z dst+1
cmp.z end+1
bne __b3
lda.z dst
cmp.z end
bne __b3
__breturn:
// }
rts
__b3:
// *dst = c
txa
ldy #0
sta (dst),y
// for(char* dst = str; dst!=end; dst++)
inc.z dst
bne !+
inc.z dst+1
!:
jmp __b2
}
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
// abs_u16(word zp($a) w)
abs_u16: {
.label w = $a
.label return = $a
// >w
lda.z w+1
// >w&0x80
and #$80
// if(>w&0x80)
cmp #0
bne __b1
rts
__b1:
// return -w;
sec
lda #0
sbc.z return
sta.z return
lda #0
sbc.z return+1
sta.z return+1
// }
rts
}
// bitmap_plot(byte register(X) x, byte register(Y) y)
// Get the sign of a 16-bit unsigned number treated as a signed number.
// Returns unsigned -1 if the number is
// sgn_u16(word zp($15) w)
sgn_u16: {
.label w = $15
.label return = $c
// >w
lda.z w+1
// >w&0x80
and #$80
// if(>w&0x80)
cmp #0
bne __b1
lda #<1
sta.z return
lda #>1
sta.z return+1
rts
__b1:
lda #<-1
sta.z return
sta.z return+1
// }
rts
}
// Plot a single dot in the bitmap
// bitmap_plot(word zp(8) x, byte register(X) y)
bitmap_plot: {
.label plotter_x = 7
.label plotter_y = 9
.label plotter = 7
// plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] }
lda bitmap_plot_xhi,x
sta.z plotter_x+1
lda bitmap_plot_xlo,x
sta.z plotter_x
// plotter_y = { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
lda bitmap_plot_yhi,y
sta.z plotter_y+1
lda bitmap_plot_ylo,y
sta.z plotter_y
// plotter_x+plotter_y
.label __0 = $17
.label plotter = $15
.label x = 8
// plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
lda bitmap_plot_yhi,x
sta.z plotter+1
lda bitmap_plot_ylo,x
sta.z plotter
// x & $fff8
lda.z x
and #<$fff8
sta.z __0
lda.z x+1
and #>$fff8
sta.z __0+1
// plotter += ( x & $fff8 )
lda.z plotter
clc
adc.z plotter_y
adc.z __0
sta.z plotter
lda.z plotter+1
adc.z plotter_y+1
adc.z __0+1
sta.z plotter+1
// *plotter | bitmap_plot_bit[x]
// <x
ldx.z x
// *plotter |= bitmap_plot_bit[<x]
lda bitmap_plot_bit,x
ldy #0
ora (plotter),y
// *plotter = *plotter | bitmap_plot_bit[x]
sta (plotter),y
// }
rts
}
.segment Data
// Tables for the plotter - initialized by calling bitmap_draw_init();
bitmap_plot_xlo: .fill $100, 0
bitmap_plot_xhi: .fill $100, 0
// Tables for the plotter - initialized by calling bitmap_init();
bitmap_plot_ylo: .fill $100, 0
bitmap_plot_yhi: .fill $100, 0
bitmap_plot_bit: .fill $100, 0

View File

@ -17,268 +17,244 @@ main::@3: scope:[main] from main::@2
to:main::@1
main::@1: scope:[main] from main::@3 main::@4
[9] next#5 = phi( main::@3/0, main::@4/next#0 )
[10] bitmap_line::x1#0 = next#5
[10] bitmap_line::x2#0 = next#5
[11] call bitmap_line
to:main::@4
main::@4: scope:[main] from main::@1
[12] next#0 = ++ next#5
to:main::@1
void bitmap_init(byte* bitmap_init::bitmap)
void bitmap_init(byte* bitmap_init::gfx , byte* bitmap_init::screen)
bitmap_init: scope:[bitmap_init] from main
[13] phi()
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[14] bitmap_init::bits#3 = phi( bitmap_init/$80, bitmap_init::@2/bitmap_init::bits#4 )
[14] bitmap_init::x#2 = phi( bitmap_init/0, bitmap_init::@2/bitmap_init::x#1 )
[15] bitmap_init::$0 = bitmap_init::x#2 & $f8
[16] bitmap_plot_xlo[bitmap_init::x#2] = bitmap_init::$0
[17] bitmap_plot_xhi[bitmap_init::x#2] = >BITMAP
[18] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3
[19] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1
[20] if(bitmap_init::bits#1!=0) goto bitmap_init::@6
[14] bitmap_init::bits#3 = phi( bitmap_init/$80, bitmap_init::@2/bitmap_init::bits#4 )
[15] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3
[16] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1
[17] if(bitmap_init::bits#1!=0) goto bitmap_init::@6
to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
[21] phi()
[18] phi()
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
[22] bitmap_init::bits#4 = phi( bitmap_init::@6/bitmap_init::bits#1, bitmap_init::@1/$80 )
[23] bitmap_init::x#1 = ++ bitmap_init::x#2
[24] if(bitmap_init::x#1!=0) goto bitmap_init::@1
[19] bitmap_init::bits#4 = phi( bitmap_init::@6/bitmap_init::bits#1, bitmap_init::@1/$80 )
[20] bitmap_init::x#1 = ++ bitmap_init::x#2
[21] if(bitmap_init::x#1!=0) goto bitmap_init::@1
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[25] bitmap_init::yoffs#2 = phi( bitmap_init::@2/(byte*) 0, bitmap_init::@4/bitmap_init::yoffs#4 )
[25] bitmap_init::y#2 = phi( bitmap_init::@2/0, bitmap_init::@4/bitmap_init::y#1 )
[26] bitmap_init::$10 = bitmap_init::y#2 & 7
[27] bitmap_init::$7 = < bitmap_init::yoffs#2
[28] bitmap_init::$8 = bitmap_init::$10 | bitmap_init::$7
[29] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$8
[30] bitmap_init::$9 = > bitmap_init::yoffs#2
[31] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$9
[32] if(bitmap_init::$10!=7) goto bitmap_init::@4
[22] bitmap_init::yoffs#2 = phi( bitmap_init::@2/BITMAP, bitmap_init::@4/bitmap_init::yoffs#4 )
[22] bitmap_init::y#2 = phi( bitmap_init::@2/0, bitmap_init::@4/bitmap_init::y#1 )
[23] bitmap_init::$7 = bitmap_init::y#2 & 7
[24] bitmap_init::$4 = < bitmap_init::yoffs#2
[25] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4
[26] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5
[27] bitmap_init::$6 = > bitmap_init::yoffs#2
[28] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6
[29] if(bitmap_init::$7!=7) goto bitmap_init::@4
to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
[33] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8
[30] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
[34] bitmap_init::yoffs#4 = phi( bitmap_init::@3/bitmap_init::yoffs#2, bitmap_init::@5/bitmap_init::yoffs#1 )
[35] bitmap_init::y#1 = ++ bitmap_init::y#2
[36] if(bitmap_init::y#1!=0) goto bitmap_init::@3
[31] bitmap_init::yoffs#4 = phi( bitmap_init::@3/bitmap_init::yoffs#2, bitmap_init::@5/bitmap_init::yoffs#1 )
[32] bitmap_init::y#1 = ++ bitmap_init::y#2
[33] if(bitmap_init::y#1!=0) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[37] return
[34] return
to:@return
void bitmap_clear()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
bitmap_clear: scope:[bitmap_clear] from main::@2
[38] bitmap_clear::bitmap#0 = *bitmap_plot_xhi w= *bitmap_plot_xlo
[39] bitmap_clear::bitmap#5 = (byte*)bitmap_clear::bitmap#0
[35] phi()
[36] call memset
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
[40] bitmap_clear::y#4 = phi( bitmap_clear/0, bitmap_clear::@3/bitmap_clear::y#1 )
[40] bitmap_clear::bitmap#3 = phi( bitmap_clear/bitmap_clear::bitmap#5, bitmap_clear::@3/bitmap_clear::bitmap#1 )
to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
[41] bitmap_clear::x#2 = phi( bitmap_clear::@1/0, bitmap_clear::@2/bitmap_clear::x#1 )
[41] bitmap_clear::bitmap#2 = phi( bitmap_clear::@1/bitmap_clear::bitmap#3, bitmap_clear::@2/bitmap_clear::bitmap#1 )
[42] *bitmap_clear::bitmap#2 = 0
[43] bitmap_clear::bitmap#1 = ++ bitmap_clear::bitmap#2
[44] bitmap_clear::x#1 = ++ bitmap_clear::x#2
[45] if(bitmap_clear::x#1!=$c8) goto bitmap_clear::@2
to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
[46] bitmap_clear::y#1 = ++ bitmap_clear::y#4
[47] if(bitmap_clear::y#1!=$28) goto bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
[37] phi()
[38] call memset
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
[48] return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
[39] return
to:@return
void init_screen()
init_screen: scope:[init_screen] from main::@3
[49] phi()
[40] phi()
to:init_screen::@1
init_screen::@1: scope:[init_screen] from init_screen init_screen::@2
[50] init_screen::c#2 = phi( init_screen/SCREEN, init_screen::@2/init_screen::c#1 )
[51] if(init_screen::c#2!=SCREEN+$400) goto init_screen::@2
[41] init_screen::c#2 = phi( init_screen/SCREEN, init_screen::@2/init_screen::c#1 )
[42] if(init_screen::c#2!=SCREEN+$400) goto init_screen::@2
to:init_screen::@return
init_screen::@return: scope:[init_screen] from init_screen::@1
[52] return
[43] return
to:@return
init_screen::@2: scope:[init_screen] from init_screen::@1
[53] *init_screen::c#2 = $14
[54] init_screen::c#1 = ++ init_screen::c#2
[44] *init_screen::c#2 = $14
[45] init_screen::c#1 = ++ init_screen::c#2
to:init_screen::@1
void bitmap_line(byte bitmap_line::x0 , byte bitmap_line::x1 , byte bitmap_line::y0 , byte bitmap_line::y1)
void bitmap_line(word bitmap_line::x1 , word bitmap_line::y1 , word bitmap_line::x2 , word bitmap_line::y2)
bitmap_line: scope:[bitmap_line] from main::@1
[55] if(bitmap_line::x0#0<bitmap_line::x1#0) goto bitmap_line::@1
to:bitmap_line::@2
bitmap_line::@2: scope:[bitmap_line] from bitmap_line
[56] bitmap_line::xd#2 = bitmap_line::x1#0
to:bitmap_line::@3
bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@2
[57] if(bitmap_line::y1#0<bitmap_line::xd#2) goto bitmap_line::@4
[46] abs_u16::w#0 = bitmap_line::x2#0
[47] call abs_u16
[48] abs_u16::return#0 = abs_u16::return#4
to:bitmap_line::@12
bitmap_line::@12: scope:[bitmap_line] from bitmap_line
[49] bitmap_line::dx#0 = abs_u16::return#0
[50] call abs_u16
[51] abs_u16::return#1 = abs_u16::return#4
to:bitmap_line::@13
bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12
[52] bitmap_line::dy#0 = abs_u16::return#1
[53] if(bitmap_line::dx#0!=0) goto bitmap_line::@1
to:bitmap_line::@18
bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13
[54] if(bitmap_line::dy#0==0) goto bitmap_line::@4
to:bitmap_line::@1
bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18
[55] sgn_u16::w#0 = bitmap_line::x2#0
[56] call sgn_u16
[57] sgn_u16::return#0 = sgn_u16::return#4
to:bitmap_line::@14
bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1
[58] bitmap_line::sx#0 = sgn_u16::return#0
[59] call sgn_u16
[60] sgn_u16::return#1 = sgn_u16::return#4
to:bitmap_line::@15
bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14
[61] bitmap_line::sy#0 = sgn_u16::return#1
[62] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2
to:bitmap_line::@5
bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@3
[58] bitmap_line_ydxd::xd#0 = bitmap_line::xd#2
[59] call bitmap_line_ydxd
to:bitmap_line::@return
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@4 bitmap_line::@5 bitmap_line::@7 bitmap_line::@8
[60] return
to:@return
bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3
[61] bitmap_line_xdyd::x#0 = bitmap_line::x1#0
[62] bitmap_line_xdyd::xd#0 = bitmap_line::xd#2
[63] call bitmap_line_xdyd
to:bitmap_line::@return
bitmap_line::@1: scope:[bitmap_line] from bitmap_line
[64] bitmap_line::xd#1 = bitmap_line::x1#0
bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15
[63] bitmap_line::e#0 = bitmap_line::dx#0 >> 1
to:bitmap_line::@6
bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@1
[65] if(bitmap_line::y1#0<bitmap_line::xd#1) goto bitmap_line::@7
bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7
[64] bitmap_line::e#3 = phi( bitmap_line::@5/bitmap_line::e#0, bitmap_line::@7/bitmap_line::e#6 )
[64] bitmap_line::y#4 = phi( bitmap_line::@5/bitmap_line::y1#0, bitmap_line::@7/bitmap_line::y#1 )
[64] bitmap_line::x#13 = phi( bitmap_line::@5/bitmap_line::x1#0, bitmap_line::@7/bitmap_line::x#12 )
[65] bitmap_plot::x#1 = bitmap_line::x#13
[66] bitmap_plot::y#1 = (byte)bitmap_line::y#4
[67] call bitmap_plot
to:bitmap_line::@16
bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6
[68] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0
[69] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0
[70] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7
to:bitmap_line::@8
bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@6
[66] bitmap_line_ydxi::xd#1 = bitmap_line::xd#1
[67] call bitmap_line_ydxi
bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16
[71] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0
[72] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0
to:bitmap_line::@7
bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8
[73] bitmap_line::e#6 = phi( bitmap_line::@16/bitmap_line::e#1, bitmap_line::@8/bitmap_line::e#2 )
[73] bitmap_line::x#12 = phi( bitmap_line::@16/bitmap_line::x#13, bitmap_line::@8/bitmap_line::x#1 )
[74] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6
to:bitmap_line::@3
bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7
[75] bitmap_line::y#7 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@7/bitmap_line::y#1 )
[75] bitmap_line::x#6 = phi( bitmap_line::@10/bitmap_line::x#15, bitmap_line::@7/bitmap_line::x#12 )
[76] bitmap_plot::x#2 = bitmap_line::x#6
[77] bitmap_plot::y#2 = (byte)bitmap_line::y#7
[78] call bitmap_plot
to:bitmap_line::@return
bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@6
[68] bitmap_line_xdyi::x1#1 = bitmap_line::x1#0
[69] bitmap_line_xdyi::xd#1 = bitmap_line::xd#1
[70] call bitmap_line_xdyi
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4
[79] return
to:@return
bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15
[80] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1
to:bitmap_line::@9
bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2
[81] bitmap_line::e1#3 = phi( bitmap_line::@10/bitmap_line::e1#6, bitmap_line::@2/bitmap_line::e1#0 )
[81] bitmap_line::y#15 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@2/bitmap_line::y1#0 )
[81] bitmap_line::x#7 = phi( bitmap_line::@10/bitmap_line::x#15, bitmap_line::@2/bitmap_line::x1#0 )
[82] bitmap_plot::x#3 = bitmap_line::x#7
[83] bitmap_plot::y#3 = (byte)bitmap_line::y#15
[84] call bitmap_plot
to:bitmap_line::@17
bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9
[85] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0
[86] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0
[87] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10
to:bitmap_line::@11
bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17
[88] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0
[89] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0
to:bitmap_line::@10
bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17
[90] bitmap_line::e1#6 = phi( bitmap_line::@11/bitmap_line::e1#2, bitmap_line::@17/bitmap_line::e1#1 )
[90] bitmap_line::y#13 = phi( bitmap_line::@11/bitmap_line::y#2, bitmap_line::@17/bitmap_line::y#15 )
[91] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9
to:bitmap_line::@3
bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18
[92] phi()
[93] call bitmap_plot
to:bitmap_line::@return
void bitmap_line_ydxd(byte bitmap_line_ydxd::y , byte bitmap_line_ydxd::x , byte bitmap_line_ydxd::y1 , byte bitmap_line_ydxd::yd , byte bitmap_line_ydxd::xd)
bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@5
[71] bitmap_line_ydxd::e#0 = bitmap_line_ydxd::xd#0 >> 1
to:bitmap_line_ydxd::@1
bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2
[72] bitmap_line_ydxd::e#3 = phi( bitmap_line_ydxd/bitmap_line_ydxd::e#0, bitmap_line_ydxd::@2/bitmap_line_ydxd::e#6 )
[72] bitmap_line_ydxd::y#2 = phi( bitmap_line_ydxd/bitmap_line::y0#0, bitmap_line_ydxd::@2/bitmap_line_ydxd::y#3 )
[72] bitmap_line_ydxd::x#3 = phi( bitmap_line_ydxd/bitmap_line::x0#0, bitmap_line_ydxd::@2/bitmap_line_ydxd::x#6 )
[73] bitmap_plot::x#3 = bitmap_line_ydxd::x#3
[74] bitmap_plot::y#3 = bitmap_line_ydxd::y#2
[75] call bitmap_plot
to:bitmap_line_ydxd::@4
bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1
[76] bitmap_line_ydxd::y#3 = ++ bitmap_line_ydxd::y#2
[77] bitmap_line_ydxd::e#1 = bitmap_line_ydxd::e#3 + bitmap_line_ydxd::xd#0
[78] if(bitmap_line::y1#0>=bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2
to:bitmap_line_ydxd::@3
bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4
[79] bitmap_line_ydxd::x#2 = -- bitmap_line_ydxd::x#3
[80] bitmap_line_ydxd::e#2 = bitmap_line_ydxd::e#1 - bitmap_line::y1#0
to:bitmap_line_ydxd::@2
bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4
[81] bitmap_line_ydxd::e#6 = phi( bitmap_line_ydxd::@3/bitmap_line_ydxd::e#2, bitmap_line_ydxd::@4/bitmap_line_ydxd::e#1 )
[81] bitmap_line_ydxd::x#6 = phi( bitmap_line_ydxd::@3/bitmap_line_ydxd::x#2, bitmap_line_ydxd::@4/bitmap_line_ydxd::x#3 )
[82] if(bitmap_line_ydxd::y#3!=bitmap_line::y1#0+1) goto bitmap_line_ydxd::@1
to:bitmap_line_ydxd::@return
bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
[83] return
void* memset(void* memset::str , byte memset::c , word memset::num)
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
[94] memset::c#4 = phi( bitmap_clear/bitmap_clear::col#0, bitmap_clear::@1/0 )
[94] memset::str#3 = phi( bitmap_clear/(void*)SCREEN, bitmap_clear::@1/(void*)BITMAP )
[94] memset::num#2 = phi( bitmap_clear/$3e8, bitmap_clear::@1/$1f40 )
[95] if(memset::num#2<=0) goto memset::@return
to:memset::@1
memset::@1: scope:[memset] from memset
[96] memset::end#0 = (byte*)memset::str#3 + memset::num#2
[97] memset::dst#4 = (byte*)memset::str#3
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[98] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
[99] if(memset::dst#2!=memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset memset::@2
[100] return
to:@return
memset::@3: scope:[memset] from memset::@2
[101] *memset::dst#2 = memset::c#4
[102] memset::dst#1 = ++ memset::dst#2
to:memset::@2
void bitmap_line_xdyd(byte bitmap_line_xdyd::x , byte bitmap_line_xdyd::y , byte bitmap_line_xdyd::x1 , byte bitmap_line_xdyd::xd , byte bitmap_line_xdyd::yd)
bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@4
[84] phi()
to:bitmap_line_xdyd::@1
bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2
[85] bitmap_line_xdyd::e#3 = phi( bitmap_line_xdyd/bitmap_line::y1#0>>1, bitmap_line_xdyd::@2/bitmap_line_xdyd::e#6 )
[85] bitmap_line_xdyd::y#3 = phi( bitmap_line_xdyd/bitmap_line::y1#0, bitmap_line_xdyd::@2/bitmap_line_xdyd::y#6 )
[85] bitmap_line_xdyd::x#3 = phi( bitmap_line_xdyd/bitmap_line_xdyd::x#0, bitmap_line_xdyd::@2/bitmap_line_xdyd::x#2 )
[86] bitmap_plot::x#1 = bitmap_line_xdyd::x#3
[87] bitmap_plot::y#1 = bitmap_line_xdyd::y#3
[88] call bitmap_plot
to:bitmap_line_xdyd::@4
bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1
[89] bitmap_line_xdyd::x#2 = ++ bitmap_line_xdyd::x#3
[90] bitmap_line_xdyd::e#1 = bitmap_line_xdyd::e#3 + bitmap_line::y1#0
[91] if(bitmap_line_xdyd::xd#0>=bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2
to:bitmap_line_xdyd::@3
bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4
[92] bitmap_line_xdyd::y#2 = -- bitmap_line_xdyd::y#3
[93] bitmap_line_xdyd::e#2 = bitmap_line_xdyd::e#1 - bitmap_line_xdyd::xd#0
to:bitmap_line_xdyd::@2
bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4
[94] bitmap_line_xdyd::e#6 = phi( bitmap_line_xdyd::@3/bitmap_line_xdyd::e#2, bitmap_line_xdyd::@4/bitmap_line_xdyd::e#1 )
[94] bitmap_line_xdyd::y#6 = phi( bitmap_line_xdyd::@3/bitmap_line_xdyd::y#2, bitmap_line_xdyd::@4/bitmap_line_xdyd::y#3 )
[95] if(bitmap_line_xdyd::x#2!=1) goto bitmap_line_xdyd::@1
to:bitmap_line_xdyd::@return
bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2
[96] return
to:@return
void bitmap_line_ydxi(byte bitmap_line_ydxi::y , byte bitmap_line_ydxi::x , byte bitmap_line_ydxi::y1 , byte bitmap_line_ydxi::yd , byte bitmap_line_ydxi::xd)
bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@8
[97] bitmap_line_ydxi::e#0 = bitmap_line_ydxi::xd#1 >> 1
to:bitmap_line_ydxi::@1
bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2
[98] bitmap_line_ydxi::e#3 = phi( bitmap_line_ydxi/bitmap_line_ydxi::e#0, bitmap_line_ydxi::@2/bitmap_line_ydxi::e#6 )
[98] bitmap_line_ydxi::y#3 = phi( bitmap_line_ydxi/bitmap_line::y0#0, bitmap_line_ydxi::@2/bitmap_line_ydxi::y#2 )
[98] bitmap_line_ydxi::x#3 = phi( bitmap_line_ydxi/bitmap_line::x0#0, bitmap_line_ydxi::@2/bitmap_line_ydxi::x#6 )
[99] bitmap_plot::x#2 = bitmap_line_ydxi::x#3
[100] bitmap_plot::y#2 = bitmap_line_ydxi::y#3
[101] call bitmap_plot
to:bitmap_line_ydxi::@4
bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1
[102] bitmap_line_ydxi::y#2 = ++ bitmap_line_ydxi::y#3
[103] bitmap_line_ydxi::e#1 = bitmap_line_ydxi::e#3 + bitmap_line_ydxi::xd#1
[104] if(bitmap_line::y1#0>=bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2
to:bitmap_line_ydxi::@3
bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4
[105] bitmap_line_ydxi::x#2 = ++ bitmap_line_ydxi::x#3
[106] bitmap_line_ydxi::e#2 = bitmap_line_ydxi::e#1 - bitmap_line::y1#0
to:bitmap_line_ydxi::@2
bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4
[107] bitmap_line_ydxi::e#6 = phi( bitmap_line_ydxi::@3/bitmap_line_ydxi::e#2, bitmap_line_ydxi::@4/bitmap_line_ydxi::e#1 )
[107] bitmap_line_ydxi::x#6 = phi( bitmap_line_ydxi::@3/bitmap_line_ydxi::x#2, bitmap_line_ydxi::@4/bitmap_line_ydxi::x#3 )
[108] if(bitmap_line_ydxi::y#2!=bitmap_line::y1#0+1) goto bitmap_line_ydxi::@1
to:bitmap_line_ydxi::@return
bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2
word abs_u16(word abs_u16::w)
abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12
[103] abs_u16::w#2 = phi( bitmap_line/abs_u16::w#0, bitmap_line::@12/bitmap_line::y2#0 )
[104] abs_u16::$0 = > abs_u16::w#2
[105] abs_u16::$1 = abs_u16::$0 & $80
[106] if(0!=abs_u16::$1) goto abs_u16::@1
to:abs_u16::@return
abs_u16::@1: scope:[abs_u16] from abs_u16
[107] abs_u16::return#2 = - abs_u16::w#2
to:abs_u16::@return
abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1
[108] abs_u16::return#4 = phi( abs_u16::@1/abs_u16::return#2, abs_u16/abs_u16::w#2 )
[109] return
to:@return
void bitmap_line_xdyi(byte bitmap_line_xdyi::x , byte bitmap_line_xdyi::y , byte bitmap_line_xdyi::x1 , byte bitmap_line_xdyi::xd , byte bitmap_line_xdyi::yd)
bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@7
[110] phi()
to:bitmap_line_xdyi::@1
bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2
[111] bitmap_line_xdyi::e#3 = phi( bitmap_line_xdyi/bitmap_line::y1#0>>1, bitmap_line_xdyi::@2/bitmap_line_xdyi::e#6 )
[111] bitmap_line_xdyi::y#3 = phi( bitmap_line_xdyi/bitmap_line::y0#0, bitmap_line_xdyi::@2/bitmap_line_xdyi::y#6 )
[111] bitmap_line_xdyi::x#3 = phi( bitmap_line_xdyi/bitmap_line::x0#0, bitmap_line_xdyi::@2/bitmap_line_xdyi::x#2 )
[112] bitmap_plot::x#0 = bitmap_line_xdyi::x#3
[113] bitmap_plot::y#0 = bitmap_line_xdyi::y#3
[114] call bitmap_plot
to:bitmap_line_xdyi::@4
bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1
[115] bitmap_line_xdyi::x#2 = ++ bitmap_line_xdyi::x#3
[116] bitmap_line_xdyi::e#1 = bitmap_line_xdyi::e#3 + bitmap_line::y1#0
[117] if(bitmap_line_xdyi::xd#1>=bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2
to:bitmap_line_xdyi::@3
bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4
[118] bitmap_line_xdyi::y#2 = ++ bitmap_line_xdyi::y#3
[119] bitmap_line_xdyi::e#2 = bitmap_line_xdyi::e#1 - bitmap_line_xdyi::xd#1
to:bitmap_line_xdyi::@2
bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4
[120] bitmap_line_xdyi::e#6 = phi( bitmap_line_xdyi::@3/bitmap_line_xdyi::e#2, bitmap_line_xdyi::@4/bitmap_line_xdyi::e#1 )
[120] bitmap_line_xdyi::y#6 = phi( bitmap_line_xdyi::@3/bitmap_line_xdyi::y#2, bitmap_line_xdyi::@4/bitmap_line_xdyi::y#3 )
[121] bitmap_line_xdyi::$6 = bitmap_line_xdyi::x1#1 + 1
[122] if(bitmap_line_xdyi::x#2!=bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1
to:bitmap_line_xdyi::@return
bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2
[123] return
word sgn_u16(word sgn_u16::w)
sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14
[110] sgn_u16::w#2 = phi( bitmap_line::@1/sgn_u16::w#0, bitmap_line::@14/bitmap_line::y2#0 )
[111] sgn_u16::$0 = > sgn_u16::w#2
[112] sgn_u16::$1 = sgn_u16::$0 & $80
[113] if(0!=sgn_u16::$1) goto sgn_u16::@1
to:sgn_u16::@return
sgn_u16::@1: scope:[sgn_u16] from sgn_u16
[114] phi()
to:sgn_u16::@return
sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1
[115] sgn_u16::return#4 = phi( sgn_u16::@1/-1, sgn_u16/1 )
[116] return
to:@return
void bitmap_plot(byte bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1
[124] bitmap_plot::y#4 = phi( bitmap_line_xdyd::@1/bitmap_plot::y#1, bitmap_line_xdyi::@1/bitmap_plot::y#0, bitmap_line_ydxd::@1/bitmap_plot::y#3, bitmap_line_ydxi::@1/bitmap_plot::y#2 )
[124] bitmap_plot::x#4 = phi( bitmap_line_xdyd::@1/bitmap_plot::x#1, bitmap_line_xdyi::@1/bitmap_plot::x#0, bitmap_line_ydxd::@1/bitmap_plot::x#3, bitmap_line_ydxi::@1/bitmap_plot::x#2 )
[125] bitmap_plot::plotter_x#0 = bitmap_plot_xhi[bitmap_plot::x#4] w= bitmap_plot_xlo[bitmap_plot::x#4]
[126] bitmap_plot::plotter_y#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
[127] bitmap_plot::plotter#0 = bitmap_plot::plotter_x#0 + bitmap_plot::plotter_y#0
[128] bitmap_plot::$1 = *((byte*)bitmap_plot::plotter#0) | bitmap_plot_bit[bitmap_plot::x#4]
[129] *((byte*)bitmap_plot::plotter#0) = bitmap_plot::$1
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
[117] bitmap_plot::x#4 = phi( bitmap_line::@3/bitmap_plot::x#2, bitmap_line::@4/bitmap_line::x1#0, bitmap_line::@6/bitmap_plot::x#1, bitmap_line::@9/bitmap_plot::x#3 )
[117] bitmap_plot::y#4 = phi( bitmap_line::@3/bitmap_plot::y#2, bitmap_line::@4/0, bitmap_line::@6/bitmap_plot::y#1, bitmap_line::@9/bitmap_plot::y#3 )
[118] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
[119] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
[120] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
[121] bitmap_plot::$1 = < bitmap_plot::x#4
[122] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[130] return
[123] return
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -7,179 +7,163 @@ const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void bitmap_clear()
byte* bitmap_clear::bitmap
word bitmap_clear::bitmap#0 bitmap zp[2]:7 11.0
byte* bitmap_clear::bitmap#1 bitmap zp[2]:7 420.59999999999997
byte* bitmap_clear::bitmap#2 bitmap zp[2]:7 1552.0
byte* bitmap_clear::bitmap#3 bitmap zp[2]:7 213.0
byte* bitmap_clear::bitmap#5 bitmap zp[2]:7 22.0
byte bitmap_clear::x
byte bitmap_clear::x#1 reg byte x 1501.5
byte bitmap_clear::x#2 reg byte x 667.3333333333334
byte bitmap_clear::y
byte bitmap_clear::y#1 y zp[1]:5 151.5
byte bitmap_clear::y#4 y zp[1]:5 33.666666666666664
void bitmap_init(byte* bitmap_init::bitmap)
byte~ bitmap_init::$0 reg byte a 202.0
byte~ bitmap_init::$10 zp[1]:6 50.5
byte~ bitmap_init::$7 reg byte a 202.0
byte~ bitmap_init::$8 reg byte a 202.0
byte~ bitmap_init::$9 reg byte a 202.0
byte* bitmap_init::bitmap
const nomodify byte WHITE = 1
word abs_u16(word abs_u16::w)
byte~ abs_u16::$0 reg byte a 2002.0
byte~ abs_u16::$1 reg byte a 2002.0
word abs_u16::return
word abs_u16::return#0 return zp[2]:10 202.0
word abs_u16::return#1 return zp[2]:10 202.0
word abs_u16::return#2 return zp[2]:10 2002.0
word abs_u16::return#4 return zp[2]:10 551.0
word abs_u16::w
word abs_u16::w#0 w zp[2]:10 202.0
word abs_u16::w#2 w zp[2]:10 776.0
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
byte bitmap_clear::bgcol
byte bitmap_clear::col
const byte bitmap_clear::col#0 col = WHITE*$10
byte bitmap_clear::fgcol
byte* bitmap_gfx
void bitmap_init(byte* bitmap_init::gfx , byte* bitmap_init::screen)
byte~ bitmap_init::$4 reg byte a 202.0
byte~ bitmap_init::$5 reg byte a 202.0
byte~ bitmap_init::$6 reg byte a 202.0
byte~ bitmap_init::$7 zp[1]:16 50.5
byte bitmap_init::bits
byte bitmap_init::bits#1 reg byte y 101.0
byte bitmap_init::bits#3 reg byte y 60.599999999999994
byte bitmap_init::bits#4 reg byte y 67.33333333333333
byte bitmap_init::bits#1 reg byte a 101.0
byte bitmap_init::bits#3 reg byte a 151.5
byte bitmap_init::bits#4 reg byte a 67.33333333333333
byte* bitmap_init::gfx
byte* bitmap_init::screen
byte bitmap_init::x
byte bitmap_init::x#1 reg byte x 151.5
byte bitmap_init::x#2 reg byte x 67.33333333333333
byte bitmap_init::x#2 reg byte x 50.5
byte bitmap_init::y
byte bitmap_init::y#1 reg byte x 151.5
byte bitmap_init::y#2 reg byte x 50.5
byte* bitmap_init::yoffs
byte* bitmap_init::yoffs#1 yoffs zp[2]:7 202.0
byte* bitmap_init::yoffs#2 yoffs zp[2]:7 63.125
byte* bitmap_init::yoffs#4 yoffs zp[2]:7 101.0
void bitmap_line(byte bitmap_line::x0 , byte bitmap_line::x1 , byte bitmap_line::y0 , byte bitmap_line::y1)
byte bitmap_line::x0
const byte bitmap_line::x0#0 x0 = 0
byte bitmap_line::x1
byte bitmap_line::x1#0 reg byte a 85.99999999999999
byte bitmap_line::xd
byte bitmap_line::xd#1 reg byte x 134.66666666666666
byte bitmap_line::xd#2 reg byte x 134.66666666666666
byte bitmap_line::y0
const byte bitmap_line::y0#0 y0 = 0
byte bitmap_line::y1
const byte bitmap_line::y1#0 y1 = $64
byte bitmap_line::yd
void bitmap_line_xdyd(byte bitmap_line_xdyd::x , byte bitmap_line_xdyd::y , byte bitmap_line_xdyd::x1 , byte bitmap_line_xdyd::xd , byte bitmap_line_xdyd::yd)
byte bitmap_line_xdyd::e
byte bitmap_line_xdyd::e#1 e zp[1]:4 133334.66666666666
byte bitmap_line_xdyd::e#2 e zp[1]:4 200002.0
byte bitmap_line_xdyd::e#3 e zp[1]:4 40000.4
byte bitmap_line_xdyd::e#6 e zp[1]:4 150001.5
byte bitmap_line_xdyd::x
byte bitmap_line_xdyd::x#0 x zp[1]:2 367.33333333333337
byte bitmap_line_xdyd::x#2 x zp[1]:2 42857.57142857143
byte bitmap_line_xdyd::x#3 x zp[1]:2 75251.0
byte bitmap_line_xdyd::x1
byte bitmap_line_xdyd::xd
byte bitmap_line_xdyd::xd#0 xd zp[1]:6 15392.538461538461
byte bitmap_line_xdyd::y
byte bitmap_line_xdyd::y#2 y zp[1]:3 100001.0
byte bitmap_line_xdyd::y#3 y zp[1]:3 57143.42857142857
byte bitmap_line_xdyd::y#6 y zp[1]:3 150001.5
byte bitmap_line_xdyd::yd
void bitmap_line_xdyi(byte bitmap_line_xdyi::x , byte bitmap_line_xdyi::y , byte bitmap_line_xdyi::x1 , byte bitmap_line_xdyi::xd , byte bitmap_line_xdyi::yd)
byte~ bitmap_line_xdyi::$6 reg byte x 200002.0
byte bitmap_line_xdyi::e
byte bitmap_line_xdyi::e#1 e zp[1]:4 133334.66666666666
byte bitmap_line_xdyi::e#2 e zp[1]:4 200002.0
byte bitmap_line_xdyi::e#3 e zp[1]:4 40000.4
byte bitmap_line_xdyi::e#6 e zp[1]:4 100001.0
byte bitmap_line_xdyi::x
byte bitmap_line_xdyi::x#2 x zp[1]:2 37500.375
byte bitmap_line_xdyi::x#3 x zp[1]:2 75000.75
byte bitmap_line_xdyi::x1
byte bitmap_line_xdyi::x1#1 x1 zp[1]:5 6673.466666666667
byte bitmap_line_xdyi::xd
byte bitmap_line_xdyi::xd#1 xd zp[1]:6 14293.071428571428
byte bitmap_line_xdyi::y
byte bitmap_line_xdyi::y#2 y zp[1]:3 100001.0
byte bitmap_line_xdyi::y#3 y zp[1]:3 57143.42857142857
byte bitmap_line_xdyi::y#6 y zp[1]:3 100001.0
byte bitmap_line_xdyi::yd
void bitmap_line_ydxd(byte bitmap_line_ydxd::y , byte bitmap_line_ydxd::x , byte bitmap_line_ydxd::y1 , byte bitmap_line_ydxd::yd , byte bitmap_line_ydxd::xd)
byte bitmap_line_ydxd::e
byte bitmap_line_ydxd::e#0 e zp[1]:4 2002.0
byte bitmap_line_ydxd::e#1 e zp[1]:4 133334.66666666666
byte bitmap_line_ydxd::e#2 e zp[1]:4 200002.0
byte bitmap_line_ydxd::e#3 e zp[1]:4 40200.600000000006
byte bitmap_line_ydxd::e#6 e zp[1]:4 150001.5
byte bitmap_line_ydxd::x
byte bitmap_line_ydxd::x#2 x zp[1]:2 100001.0
byte bitmap_line_ydxd::x#3 x zp[1]:2 57143.42857142857
byte bitmap_line_ydxd::x#6 x zp[1]:2 150001.5
byte bitmap_line_ydxd::xd
byte bitmap_line_ydxd::xd#0 xd zp[1]:6 7777.153846153846
byte bitmap_line_ydxd::y
byte bitmap_line_ydxd::y#2 y zp[1]:3 75000.75
byte bitmap_line_ydxd::y#3 y zp[1]:3 42857.57142857143
byte bitmap_line_ydxd::y1
byte bitmap_line_ydxd::yd
void bitmap_line_ydxi(byte bitmap_line_ydxi::y , byte bitmap_line_ydxi::x , byte bitmap_line_ydxi::y1 , byte bitmap_line_ydxi::yd , byte bitmap_line_ydxi::xd)
byte bitmap_line_ydxi::e
byte bitmap_line_ydxi::e#0 e zp[1]:4 2002.0
byte bitmap_line_ydxi::e#1 e zp[1]:4 133334.66666666666
byte bitmap_line_ydxi::e#2 e zp[1]:4 200002.0
byte bitmap_line_ydxi::e#3 e zp[1]:4 40200.600000000006
byte bitmap_line_ydxi::e#6 e zp[1]:4 150001.5
byte bitmap_line_ydxi::x
byte bitmap_line_ydxi::x#2 x zp[1]:2 100001.0
byte bitmap_line_ydxi::x#3 x zp[1]:2 57143.42857142857
byte bitmap_line_ydxi::x#6 x zp[1]:2 150001.5
byte bitmap_line_ydxi::xd
byte bitmap_line_ydxi::xd#1 xd zp[1]:6 7777.153846153846
byte bitmap_line_ydxi::y
byte bitmap_line_ydxi::y#2 y zp[1]:3 42857.57142857143
byte bitmap_line_ydxi::y#3 y zp[1]:3 75000.75
byte bitmap_line_ydxi::y1
byte bitmap_line_ydxi::yd
void bitmap_plot(byte bitmap_plot::x , byte bitmap_plot::y)
byte~ bitmap_plot::$1 reg byte a 2000002.0
byte* bitmap_init::yoffs#1 yoffs zp[2]:2 202.0
byte* bitmap_init::yoffs#2 yoffs zp[2]:2 63.125
byte* bitmap_init::yoffs#4 yoffs zp[2]:2 101.0
void bitmap_line(word bitmap_line::x1 , word bitmap_line::y1 , word bitmap_line::x2 , word bitmap_line::y2)
word bitmap_line::dx
word bitmap_line::dx#0 dx zp[2]:17 800.1842105263158
word bitmap_line::dy
word bitmap_line::dy#0 dy zp[2]:10 868.7714285714285
word bitmap_line::e
word bitmap_line::e#0 e zp[2]:6 202.0
word bitmap_line::e#1 e zp[2]:6 13334.666666666666
word bitmap_line::e#2 e zp[2]:6 20002.0
word bitmap_line::e#3 e zp[2]:6 4020.6000000000004
word bitmap_line::e#6 e zp[2]:6 15001.5
word bitmap_line::e1
word bitmap_line::e1#0 e1 zp[2]:4 202.0
word bitmap_line::e1#1 e1 zp[2]:4 13334.666666666666
word bitmap_line::e1#2 e1 zp[2]:4 20002.0
word bitmap_line::e1#3 e1 zp[2]:4 4020.6000000000004
word bitmap_line::e1#6 e1 zp[2]:4 15001.5
word bitmap_line::sx
word bitmap_line::sx#0 sx zp[2]:19 693.2068965517242
word bitmap_line::sy
word bitmap_line::sy#0 sy zp[2]:12 773.1923076923076
word bitmap_line::x
word bitmap_line::x#1 x zp[2]:8 10001.0
word bitmap_line::x#12 x zp[2]:8 20002.0
word bitmap_line::x#13 x zp[2]:8 5714.857142857143
word bitmap_line::x#15 x zp[2]:8 5714.857142857143
word bitmap_line::x#6 x zp[2]:8 20103.0
word bitmap_line::x#7 x zp[2]:8 7500.75
word bitmap_line::x1
const word bitmap_line::x1#0 x1 = 0
word bitmap_line::x2
word bitmap_line::x2#0 x2 zp[2]:14 340.4666666666667
word bitmap_line::y
word bitmap_line::y#1 y zp[2]:2 5714.857142857143
word bitmap_line::y#13 y zp[2]:2 20002.0
word bitmap_line::y#15 y zp[2]:2 4286.142857142857
word bitmap_line::y#2 y zp[2]:2 10001.0
word bitmap_line::y#4 y zp[2]:2 5000.5
word bitmap_line::y#7 y zp[2]:2 10001.0
word bitmap_line::y1
const word bitmap_line::y1#0 y1 = 0
word bitmap_line::y2
const word bitmap_line::y2#0 y2 = $64
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 zp[2]:23 200002.0
byte~ bitmap_plot::$1 reg byte x 200002.0
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 plotter zp[2]:7 500000.5
word bitmap_plot::plotter_x
word bitmap_plot::plotter_x#0 plotter_x zp[2]:7 1000001.0
word bitmap_plot::plotter_y
word bitmap_plot::plotter_y#0 plotter_y zp[2]:9 2000002.0
byte bitmap_plot::x
byte bitmap_plot::x#0 reg byte x 100001.0
byte bitmap_plot::x#1 reg byte x 100001.0
byte bitmap_plot::x#2 reg byte x 100001.0
byte bitmap_plot::x#3 reg byte x 100001.0
byte bitmap_plot::x#4 reg byte x 850001.75
word bitmap_plot::plotter#0 plotter zp[2]:21 50000.5
byte* bitmap_plot::plotter#1 plotter zp[2]:21 150001.5
word bitmap_plot::x
word bitmap_plot::x#1 x zp[2]:8 10001.0
word bitmap_plot::x#2 x zp[2]:8 101.0
word bitmap_plot::x#3 x zp[2]:8 10001.0
word bitmap_plot::x#4 x zp[2]:8 55026.25
byte bitmap_plot::y
byte bitmap_plot::y#0 reg byte y 200002.0
byte bitmap_plot::y#1 reg byte y 200002.0
byte bitmap_plot::y#2 reg byte y 200002.0
byte bitmap_plot::y#3 reg byte y 200002.0
byte bitmap_plot::y#4 reg byte y 1200003.0
byte bitmap_plot::y#1 reg byte x 20002.0
byte bitmap_plot::y#2 reg byte x 202.0
byte bitmap_plot::y#3 reg byte x 20002.0
byte bitmap_plot::y#4 reg byte x 220105.0
const to_nomodify byte* bitmap_plot_bit[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_xhi[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_xlo[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_yhi[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_ylo[$100] = { fill( $100, 0) }
byte* bitmap_screen
void init_screen()
byte* init_screen::c
byte* init_screen::c#1 c zp[2]:7 202.0
byte* init_screen::c#2 c zp[2]:7 134.66666666666666
byte* init_screen::c#1 c zp[2]:2 202.0
byte* init_screen::c#2 c zp[2]:2 134.66666666666666
void main()
void* memset(void* memset::str , byte memset::c , word memset::num)
byte memset::c
byte memset::c#4 reg byte x 125.125
byte* memset::dst
byte* memset::dst#1 dst zp[2]:8 2002.0
byte* memset::dst#2 dst zp[2]:8 1368.3333333333335
byte* memset::dst#4 dst zp[2]:8 202.0
byte* memset::end
byte* memset::end#0 end zp[2]:6 183.66666666666669
word memset::num
word memset::num#2 num zp[2]:6 101.0
void* memset::return
void* memset::str
void* memset::str#3 str zp[2]:8
byte next
byte next#0 next zp[1]:5 22.0
byte next#5 next zp[1]:5 11.0
byte next#0 next zp[1]:16 22.0
byte next#5 next zp[1]:16 11.0
word sgn_u16(word sgn_u16::w)
byte~ sgn_u16::$0 reg byte a 2002.0
byte~ sgn_u16::$1 reg byte a 2002.0
word sgn_u16::return
word sgn_u16::return#0 return zp[2]:12 202.0
word sgn_u16::return#1 return zp[2]:12 202.0
word sgn_u16::return#4 return zp[2]:12 50.5
word sgn_u16::w
word sgn_u16::w#0 w zp[2]:21 202.0
word sgn_u16::w#2 w zp[2]:21 1102.0
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
zp[1]:2 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ]
zp[1]:3 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ]
zp[1]:4 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ]
reg byte a [ bitmap_line::x1#0 ]
reg byte a [ bitmap_init::$0 ]
reg byte a [ bitmap_init::$7 ]
reg byte a [ bitmap_init::$8 ]
reg byte a [ bitmap_init::$9 ]
reg byte x [ bitmap_line::xd#2 ]
reg byte x [ bitmap_line::xd#1 ]
zp[1]:5 [ bitmap_line_xdyi::x1#1 bitmap_clear::y#4 bitmap_clear::y#1 next#5 next#0 ]
zp[1]:6 [ bitmap_line_xdyi::xd#1 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_init::$10 ]
reg byte x [ bitmap_line_xdyi::$6 ]
zp[2]:7 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 init_screen::c#2 init_screen::c#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
zp[2]:9 [ bitmap_plot::plotter_y#0 ]
reg byte a [ bitmap_plot::$1 ]
zp[2]:2 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
zp[2]:4 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
zp[2]:6 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
reg byte x [ memset::c#4 ]
zp[2]:10 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
zp[2]:12 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
zp[2]:14 [ bitmap_line::x2#0 ]
zp[1]:16 [ bitmap_init::$7 next#5 next#0 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]
zp[2]:17 [ bitmap_line::dx#0 ]
zp[2]:19 [ bitmap_line::sx#0 ]
reg byte a [ abs_u16::$0 ]
reg byte a [ abs_u16::$1 ]
reg byte a [ sgn_u16::$0 ]
reg byte a [ sgn_u16::$1 ]
zp[2]:21 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
zp[2]:23 [ bitmap_plot::$0 ]
reg byte x [ bitmap_plot::$1 ]

View File

@ -1,4 +1,4 @@
// Shows that bitmap2.kc line() does not have the same problem as bitmap-draw.kc
// Shows that c64-bitmap.kc line() does not have the same problem as bitmap-draw.kc
// See bitmap-line-anim-1.kc
// Commodore 64 PRG executable file
.file [name="bitmap-line-anim-2.prg", type="prg", segments="Program"]

View File

@ -2269,7 +2269,7 @@ Allocated (was zp[2]:63) zp[2]:23 [ bitmap_plot::$0 ]
ASSEMBLER BEFORE OPTIMIZATION
// File Comments
// Shows that bitmap2.kc line() does not have the same problem as bitmap-draw.kc
// Shows that c64-bitmap.kc line() does not have the same problem as bitmap-draw.kc
// See bitmap-line-anim-1.kc
// Upstart
// Commodore 64 PRG executable file
@ -3400,7 +3400,7 @@ FINAL ASSEMBLER
Score: 30180
// File Comments
// Shows that bitmap2.kc line() does not have the same problem as bitmap-draw.kc
// Shows that c64-bitmap.kc line() does not have the same problem as bitmap-draw.kc
// See bitmap-line-anim-1.kc
// Upstart
// Commodore 64 PRG executable file

File diff suppressed because it is too large Load Diff

View File

@ -594,10 +594,10 @@ gfx_init_VICII_bitmap::@return: scope:[gfx_init_VICII_bitmap] from gfx_init_VIC
[319] return
to:@return
gfx_init_VICII_bitmap::@2: scope:[gfx_init_VICII_bitmap] from gfx_init_VICII_bitmap::@1
[320] bitmap_line::x0#0 = gfx_init_VICII_bitmap::lines_x[gfx_init_VICII_bitmap::l#2]
[321] bitmap_line::x1#0 = (gfx_init_VICII_bitmap::lines_x+1)[gfx_init_VICII_bitmap::l#2]
[322] bitmap_line::y0#0 = gfx_init_VICII_bitmap::lines_y[gfx_init_VICII_bitmap::l#2]
[323] bitmap_line::y1#0 = (gfx_init_VICII_bitmap::lines_y+1)[gfx_init_VICII_bitmap::l#2]
[320] bitmap_line::x1#0 = gfx_init_VICII_bitmap::lines_x[gfx_init_VICII_bitmap::l#2]
[321] bitmap_line::y1#0 = gfx_init_VICII_bitmap::lines_y[gfx_init_VICII_bitmap::l#2]
[322] bitmap_line::x2#0 = (gfx_init_VICII_bitmap::lines_x+1)[gfx_init_VICII_bitmap::l#2]
[323] bitmap_line::y2#0 = (gfx_init_VICII_bitmap::lines_y+1)[gfx_init_VICII_bitmap::l#2]
[324] call bitmap_line
to:gfx_init_VICII_bitmap::@4
gfx_init_VICII_bitmap::@4: scope:[gfx_init_VICII_bitmap] from gfx_init_VICII_bitmap::@2
@ -1343,469 +1343,347 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get
[636] return
to:@return
void bitmap_init(byte* bitmap_init::bitmap)
void bitmap_init(byte* bitmap_init::gfx , byte* bitmap_init::screen)
bitmap_init: scope:[bitmap_init] from gfx_init_VICII_bitmap
[637] phi()
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[638] bitmap_init::bits#3 = phi( bitmap_init/$80, bitmap_init::@2/bitmap_init::bits#4 )
[638] bitmap_init::x#2 = phi( bitmap_init/0, bitmap_init::@2/bitmap_init::x#1 )
[639] bitmap_init::$0 = bitmap_init::x#2 & $f8
[640] bitmap_plot_xlo[bitmap_init::x#2] = bitmap_init::$0
[641] bitmap_plot_xhi[bitmap_init::x#2] = >VICII_BITMAP
[642] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3
[643] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1
[644] if(bitmap_init::bits#1!=0) goto bitmap_init::@6
[638] bitmap_init::bits#3 = phi( bitmap_init/$80, bitmap_init::@2/bitmap_init::bits#4 )
[639] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3
[640] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1
[641] if(bitmap_init::bits#1!=0) goto bitmap_init::@6
to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
[645] phi()
[642] phi()
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
[646] bitmap_init::bits#4 = phi( bitmap_init::@6/bitmap_init::bits#1, bitmap_init::@1/$80 )
[647] bitmap_init::x#1 = ++ bitmap_init::x#2
[648] if(bitmap_init::x#1!=0) goto bitmap_init::@1
[643] bitmap_init::bits#4 = phi( bitmap_init::@6/bitmap_init::bits#1, bitmap_init::@1/$80 )
[644] bitmap_init::x#1 = ++ bitmap_init::x#2
[645] if(bitmap_init::x#1!=0) goto bitmap_init::@1
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[649] bitmap_init::yoffs#2 = phi( bitmap_init::@2/(byte*) 0, bitmap_init::@4/bitmap_init::yoffs#4 )
[649] bitmap_init::y#2 = phi( bitmap_init::@2/0, bitmap_init::@4/bitmap_init::y#1 )
[650] bitmap_init::$10 = bitmap_init::y#2 & 7
[651] bitmap_init::$7 = < bitmap_init::yoffs#2
[652] bitmap_init::$8 = bitmap_init::$10 | bitmap_init::$7
[653] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$8
[654] bitmap_init::$9 = > bitmap_init::yoffs#2
[655] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$9
[656] if(bitmap_init::$10!=7) goto bitmap_init::@4
[646] bitmap_init::yoffs#2 = phi( bitmap_init::@2/VICII_BITMAP, bitmap_init::@4/bitmap_init::yoffs#4 )
[646] bitmap_init::y#2 = phi( bitmap_init::@2/0, bitmap_init::@4/bitmap_init::y#1 )
[647] bitmap_init::$7 = bitmap_init::y#2 & 7
[648] bitmap_init::$4 = < bitmap_init::yoffs#2
[649] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4
[650] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5
[651] bitmap_init::$6 = > bitmap_init::yoffs#2
[652] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6
[653] if(bitmap_init::$7!=7) goto bitmap_init::@4
to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
[657] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8
[654] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
[658] bitmap_init::yoffs#4 = phi( bitmap_init::@3/bitmap_init::yoffs#2, bitmap_init::@5/bitmap_init::yoffs#1 )
[659] bitmap_init::y#1 = ++ bitmap_init::y#2
[660] if(bitmap_init::y#1!=0) goto bitmap_init::@3
[655] bitmap_init::yoffs#4 = phi( bitmap_init::@3/bitmap_init::yoffs#2, bitmap_init::@5/bitmap_init::yoffs#1 )
[656] bitmap_init::y#1 = ++ bitmap_init::y#2
[657] if(bitmap_init::y#1!=0) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[661] return
[658] return
to:@return
void bitmap_clear()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
bitmap_clear: scope:[bitmap_clear] from gfx_init_VICII_bitmap::@3
[662] bitmap_clear::bitmap#0 = *bitmap_plot_xhi w= *bitmap_plot_xlo
[663] bitmap_clear::bitmap#5 = (byte*)bitmap_clear::bitmap#0
[659] phi()
[660] call memset
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
[664] bitmap_clear::y#4 = phi( bitmap_clear/0, bitmap_clear::@3/bitmap_clear::y#1 )
[664] bitmap_clear::bitmap#3 = phi( bitmap_clear/bitmap_clear::bitmap#5, bitmap_clear::@3/bitmap_clear::bitmap#1 )
to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
[665] bitmap_clear::x#2 = phi( bitmap_clear::@1/0, bitmap_clear::@2/bitmap_clear::x#1 )
[665] bitmap_clear::bitmap#2 = phi( bitmap_clear::@1/bitmap_clear::bitmap#3, bitmap_clear::@2/bitmap_clear::bitmap#1 )
[666] *bitmap_clear::bitmap#2 = 0
[667] bitmap_clear::bitmap#1 = ++ bitmap_clear::bitmap#2
[668] bitmap_clear::x#1 = ++ bitmap_clear::x#2
[669] if(bitmap_clear::x#1!=$c8) goto bitmap_clear::@2
to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
[670] bitmap_clear::y#1 = ++ bitmap_clear::y#4
[671] if(bitmap_clear::y#1!=$28) goto bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
[661] phi()
[662] call memset
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
[672] return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
[663] return
to:@return
void bitmap_line(byte bitmap_line::x0 , byte bitmap_line::x1 , byte bitmap_line::y0 , byte bitmap_line::y1)
void bitmap_line(word bitmap_line::x1 , word bitmap_line::y1 , word bitmap_line::x2 , word bitmap_line::y2)
bitmap_line: scope:[bitmap_line] from gfx_init_VICII_bitmap::@2
[673] if(bitmap_line::x0#0<bitmap_line::x1#0) goto bitmap_line::@1
to:bitmap_line::@2
bitmap_line::@2: scope:[bitmap_line] from bitmap_line
[674] bitmap_line::xd#2 = bitmap_line::x0#0 - bitmap_line::x1#0
[675] if(bitmap_line::y0#0<bitmap_line::y1#0) goto bitmap_line::@7
to:bitmap_line::@3
bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@2
[676] bitmap_line::yd#2 = bitmap_line::y0#0 - bitmap_line::y1#0
[677] if(bitmap_line::yd#2<bitmap_line::xd#2) goto bitmap_line::@8
to:bitmap_line::@4
bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3
[678] bitmap_line_ydxi::y#0 = bitmap_line::y1#0
[679] bitmap_line_ydxi::x#0 = bitmap_line::x1#0
[680] bitmap_line_ydxi::y1#0 = bitmap_line::y0#0
[681] bitmap_line_ydxi::yd#0 = bitmap_line::yd#2
[682] bitmap_line_ydxi::xd#0 = bitmap_line::xd#2
[683] call bitmap_line_ydxi
to:bitmap_line::@return
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@12 bitmap_line::@13 bitmap_line::@14 bitmap_line::@4 bitmap_line::@6 bitmap_line::@8 bitmap_line::@9
[684] return
to:@return
bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@3
[685] bitmap_line_xdyi::x#0 = bitmap_line::x1#0
[686] bitmap_line_xdyi::y#0 = bitmap_line::y1#0
[687] bitmap_line_xdyi::x1#0 = bitmap_line::x0#0
[688] bitmap_line_xdyi::xd#0 = bitmap_line::xd#2
[689] bitmap_line_xdyi::yd#0 = bitmap_line::yd#2
[690] call bitmap_line_xdyi
to:bitmap_line::@return
bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@2
[691] bitmap_line::yd#1 = bitmap_line::y1#0 - bitmap_line::y0#0
[692] if(bitmap_line::yd#1<bitmap_line::xd#2) goto bitmap_line::@9
to:bitmap_line::@10
bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@7
[693] bitmap_line_ydxd::y#0 = bitmap_line::y0#0
[694] bitmap_line_ydxd::x#0 = bitmap_line::x0#0
[695] bitmap_line_ydxd::y1#0 = bitmap_line::y1#0
[696] bitmap_line_ydxd::yd#0 = bitmap_line::yd#1
[697] bitmap_line_ydxd::xd#0 = bitmap_line::xd#2
[698] call bitmap_line_ydxd
to:bitmap_line::@return
bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@7
[699] bitmap_line_xdyd::x#0 = bitmap_line::x1#0
[700] bitmap_line_xdyd::y#0 = bitmap_line::y1#0
[701] bitmap_line_xdyd::x1#0 = bitmap_line::x0#0
[702] bitmap_line_xdyd::xd#0 = bitmap_line::xd#2
[703] bitmap_line_xdyd::yd#0 = bitmap_line::yd#1
[704] call bitmap_line_xdyd
to:bitmap_line::@return
bitmap_line::@1: scope:[bitmap_line] from bitmap_line
[705] bitmap_line::xd#1 = bitmap_line::x1#0 - bitmap_line::x0#0
[706] if(bitmap_line::y0#0<bitmap_line::y1#0) goto bitmap_line::@11
to:bitmap_line::@5
bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@1
[707] bitmap_line::yd#10 = bitmap_line::y0#0 - bitmap_line::y1#0
[708] if(bitmap_line::yd#10<bitmap_line::xd#1) goto bitmap_line::@12
to:bitmap_line::@6
bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5
[709] bitmap_line_ydxd::y#1 = bitmap_line::y1#0
[710] bitmap_line_ydxd::x#1 = bitmap_line::x1#0
[711] bitmap_line_ydxd::y1#1 = bitmap_line::y0#0
[712] bitmap_line_ydxd::yd#1 = bitmap_line::yd#10
[713] bitmap_line_ydxd::xd#1 = bitmap_line::xd#1
[714] call bitmap_line_ydxd
to:bitmap_line::@return
bitmap_line::@12: scope:[bitmap_line] from bitmap_line::@5
[715] bitmap_line_xdyd::x#1 = bitmap_line::x0#0
[716] bitmap_line_xdyd::y#1 = bitmap_line::y0#0
[717] bitmap_line_xdyd::x1#1 = bitmap_line::x1#0
[718] bitmap_line_xdyd::xd#1 = bitmap_line::xd#1
[719] bitmap_line_xdyd::yd#1 = bitmap_line::yd#10
[720] call bitmap_line_xdyd
to:bitmap_line::@return
bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@1
[721] bitmap_line::yd#11 = bitmap_line::y1#0 - bitmap_line::y0#0
[722] if(bitmap_line::yd#11<bitmap_line::xd#1) goto bitmap_line::@13
[664] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0
[665] call abs_u16
[666] abs_u16::return#0 = abs_u16::return#4
to:bitmap_line::@12
bitmap_line::@12: scope:[bitmap_line] from bitmap_line
[667] bitmap_line::dx#0 = abs_u16::return#0
[668] abs_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0
[669] call abs_u16
[670] abs_u16::return#1 = abs_u16::return#4
to:bitmap_line::@13
bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12
[671] bitmap_line::dy#0 = abs_u16::return#1
[672] if(bitmap_line::dx#0!=0) goto bitmap_line::@1
to:bitmap_line::@18
bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13
[673] if(bitmap_line::dy#0==0) goto bitmap_line::@4
to:bitmap_line::@1
bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18
[674] sgn_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0
[675] call sgn_u16
[676] sgn_u16::return#0 = sgn_u16::return#4
to:bitmap_line::@14
bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@11
[723] bitmap_line_ydxi::y#1 = bitmap_line::y0#0
[724] bitmap_line_ydxi::x#1 = bitmap_line::x0#0
[725] bitmap_line_ydxi::y1#1 = bitmap_line::y1#0
[726] bitmap_line_ydxi::yd#1 = bitmap_line::yd#11
[727] bitmap_line_ydxi::xd#1 = bitmap_line::xd#1
[728] call bitmap_line_ydxi
bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1
[677] bitmap_line::sx#0 = sgn_u16::return#0
[678] sgn_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0
[679] call sgn_u16
[680] sgn_u16::return#1 = sgn_u16::return#4
to:bitmap_line::@15
bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14
[681] bitmap_line::sy#0 = sgn_u16::return#1
[682] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2
to:bitmap_line::@5
bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15
[683] bitmap_line::e#0 = bitmap_line::dx#0 >> 1
to:bitmap_line::@6
bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7
[684] bitmap_line::e#3 = phi( bitmap_line::@5/bitmap_line::e#0, bitmap_line::@7/bitmap_line::e#6 )
[684] bitmap_line::y#4 = phi( bitmap_line::@5/bitmap_line::y1#0, bitmap_line::@7/bitmap_line::y#1 )
[684] bitmap_line::x#13 = phi( bitmap_line::@5/bitmap_line::x1#0, bitmap_line::@7/bitmap_line::x#12 )
[685] bitmap_plot::x#1 = bitmap_line::x#13
[686] bitmap_plot::y#1 = (byte)bitmap_line::y#4
[687] call bitmap_plot
to:bitmap_line::@16
bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6
[688] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0
[689] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0
[690] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7
to:bitmap_line::@8
bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16
[691] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0
[692] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0
to:bitmap_line::@7
bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8
[693] bitmap_line::e#6 = phi( bitmap_line::@16/bitmap_line::e#1, bitmap_line::@8/bitmap_line::e#2 )
[693] bitmap_line::x#12 = phi( bitmap_line::@16/bitmap_line::x#13, bitmap_line::@8/bitmap_line::x#1 )
[694] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6
to:bitmap_line::@3
bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7
[695] bitmap_line::y#7 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@7/bitmap_line::y#1 )
[695] bitmap_line::x#6 = phi( bitmap_line::@10/bitmap_line::x#15, bitmap_line::@7/bitmap_line::x#12 )
[696] bitmap_plot::x#2 = bitmap_line::x#6
[697] bitmap_plot::y#2 = (byte)bitmap_line::y#7
[698] call bitmap_plot
to:bitmap_line::@return
bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@11
[729] bitmap_line_xdyi::x#1 = bitmap_line::x0#0
[730] bitmap_line_xdyi::y#1 = bitmap_line::y0#0
[731] bitmap_line_xdyi::x1#1 = bitmap_line::x1#0
[732] bitmap_line_xdyi::xd#1 = bitmap_line::xd#1
[733] bitmap_line_xdyi::yd#1 = bitmap_line::yd#11
[734] call bitmap_line_xdyi
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4
[699] return
to:@return
bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15
[700] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1
to:bitmap_line::@9
bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2
[701] bitmap_line::e1#3 = phi( bitmap_line::@10/bitmap_line::e1#6, bitmap_line::@2/bitmap_line::e1#0 )
[701] bitmap_line::y#15 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@2/bitmap_line::y1#0 )
[701] bitmap_line::x#7 = phi( bitmap_line::@10/bitmap_line::x#15, bitmap_line::@2/bitmap_line::x1#0 )
[702] bitmap_plot::x#3 = bitmap_line::x#7
[703] bitmap_plot::y#3 = (byte)bitmap_line::y#15
[704] call bitmap_plot
to:bitmap_line::@17
bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9
[705] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0
[706] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0
[707] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10
to:bitmap_line::@11
bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17
[708] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0
[709] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0
to:bitmap_line::@10
bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17
[710] bitmap_line::e1#6 = phi( bitmap_line::@11/bitmap_line::e1#2, bitmap_line::@17/bitmap_line::e1#1 )
[710] bitmap_line::y#13 = phi( bitmap_line::@11/bitmap_line::y#2, bitmap_line::@17/bitmap_line::y#15 )
[711] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9
to:bitmap_line::@3
bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18
[712] bitmap_plot::x#0 = bitmap_line::x1#0
[713] bitmap_plot::y#0 = (byte)bitmap_line::y1#0
[714] call bitmap_plot
to:bitmap_line::@return
void dtvSetCpuBankSegment1(byte dtvSetCpuBankSegment1::cpuBankIdx)
dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@6 gfx_init_plane_charset8 gfx_init_plane_charset8::@8 gfx_init_plane_fill gfx_init_plane_fill::@4 gfx_init_plane_horisontal gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal::@7 gfx_init_plane_vertical gfx_init_plane_vertical::@4
[735] dtvSetCpuBankSegment1::cpuBankIdx#13 = phi( gfx_init_plane_8bppchunky/(byte)PLANE_8BPP_CHUNKY/$4000, gfx_init_plane_8bppchunky::@4/dtvSetCpuBankSegment1::cpuBankIdx#1, gfx_init_plane_8bppchunky::@6/(byte)$4000/$4000, gfx_init_plane_charset8/gfx_init_plane_charset8::gfxbCpuBank#0, gfx_init_plane_charset8::@8/(byte)$4000/$4000, gfx_init_plane_fill/dtvSetCpuBankSegment1::cpuBankIdx#11, gfx_init_plane_fill::@4/(byte)$4000/$4000, gfx_init_plane_horisontal/gfx_init_plane_horisontal::gfxbCpuBank#0, gfx_init_plane_horisontal2/gfx_init_plane_horisontal2::gfxbCpuBank#0, gfx_init_plane_horisontal2::@4/(byte)$4000/$4000, gfx_init_plane_horisontal::@7/(byte)$4000/$4000, gfx_init_plane_vertical/gfx_init_plane_vertical::gfxbCpuBank#0, gfx_init_plane_vertical::@4/(byte)$4000/$4000 )
[736] *dtvSetCpuBankSegment1::cpuBank = dtvSetCpuBankSegment1::cpuBankIdx#13
[715] dtvSetCpuBankSegment1::cpuBankIdx#13 = phi( gfx_init_plane_8bppchunky/(byte)PLANE_8BPP_CHUNKY/$4000, gfx_init_plane_8bppchunky::@4/dtvSetCpuBankSegment1::cpuBankIdx#1, gfx_init_plane_8bppchunky::@6/(byte)$4000/$4000, gfx_init_plane_charset8/gfx_init_plane_charset8::gfxbCpuBank#0, gfx_init_plane_charset8::@8/(byte)$4000/$4000, gfx_init_plane_fill/dtvSetCpuBankSegment1::cpuBankIdx#11, gfx_init_plane_fill::@4/(byte)$4000/$4000, gfx_init_plane_horisontal/gfx_init_plane_horisontal::gfxbCpuBank#0, gfx_init_plane_horisontal2/gfx_init_plane_horisontal2::gfxbCpuBank#0, gfx_init_plane_horisontal2::@4/(byte)$4000/$4000, gfx_init_plane_horisontal::@7/(byte)$4000/$4000, gfx_init_plane_vertical/gfx_init_plane_vertical::gfxbCpuBank#0, gfx_init_plane_vertical::@4/(byte)$4000/$4000 )
[716] *dtvSetCpuBankSegment1::cpuBank = dtvSetCpuBankSegment1::cpuBankIdx#13
asm { .byte$32,$dd lda$ff .byte$32,$00 }
to:dtvSetCpuBankSegment1::@return
dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1
[738] return
[718] return
to:@return
void gfx_init_plane_fill(dword gfx_init_plane_fill::plane_addr , byte gfx_init_plane_fill::fill)
gfx_init_plane_fill: scope:[gfx_init_plane_fill] from gfx_init_plane_blank gfx_init_plane_full gfx_init_plane_vertical2
[739] gfx_init_plane_fill::fill#6 = phi( gfx_init_plane_blank/0, gfx_init_plane_full/$ff, gfx_init_plane_vertical2/$1b )
[739] gfx_init_plane_fill::plane_addr#3 = phi( gfx_init_plane_blank/PLANE_BLANK, gfx_init_plane_full/PLANE_FULL, gfx_init_plane_vertical2/PLANE_VERTICAL2 )
[740] gfx_init_plane_fill::$0 = gfx_init_plane_fill::plane_addr#3 << 2
[741] gfx_init_plane_fill::$1 = > gfx_init_plane_fill::$0
[742] gfx_init_plane_fill::gfxbCpuBank#0 = < gfx_init_plane_fill::$1
[743] dtvSetCpuBankSegment1::cpuBankIdx#11 = gfx_init_plane_fill::gfxbCpuBank#0
[744] call dtvSetCpuBankSegment1
[719] gfx_init_plane_fill::fill#6 = phi( gfx_init_plane_blank/0, gfx_init_plane_full/$ff, gfx_init_plane_vertical2/$1b )
[719] gfx_init_plane_fill::plane_addr#3 = phi( gfx_init_plane_blank/PLANE_BLANK, gfx_init_plane_full/PLANE_FULL, gfx_init_plane_vertical2/PLANE_VERTICAL2 )
[720] gfx_init_plane_fill::$0 = gfx_init_plane_fill::plane_addr#3 << 2
[721] gfx_init_plane_fill::$1 = > gfx_init_plane_fill::$0
[722] gfx_init_plane_fill::gfxbCpuBank#0 = < gfx_init_plane_fill::$1
[723] dtvSetCpuBankSegment1::cpuBankIdx#11 = gfx_init_plane_fill::gfxbCpuBank#0
[724] call dtvSetCpuBankSegment1
to:gfx_init_plane_fill::@5
gfx_init_plane_fill::@5: scope:[gfx_init_plane_fill] from gfx_init_plane_fill
[745] gfx_init_plane_fill::$4 = < gfx_init_plane_fill::plane_addr#3
[746] gfx_init_plane_fill::$5 = gfx_init_plane_fill::$4 & $3fff
[747] gfx_init_plane_fill::gfxb#0 = $4000 + gfx_init_plane_fill::$5
[748] gfx_init_plane_fill::gfxb#6 = (byte*)gfx_init_plane_fill::gfxb#0
[725] gfx_init_plane_fill::$4 = < gfx_init_plane_fill::plane_addr#3
[726] gfx_init_plane_fill::$5 = gfx_init_plane_fill::$4 & $3fff
[727] gfx_init_plane_fill::gfxb#0 = $4000 + gfx_init_plane_fill::$5
[728] gfx_init_plane_fill::gfxb#6 = (byte*)gfx_init_plane_fill::gfxb#0
to:gfx_init_plane_fill::@1
gfx_init_plane_fill::@1: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@3 gfx_init_plane_fill::@5
[749] gfx_init_plane_fill::by#4 = phi( gfx_init_plane_fill::@3/gfx_init_plane_fill::by#1, gfx_init_plane_fill::@5/0 )
[749] gfx_init_plane_fill::gfxb#3 = phi( gfx_init_plane_fill::@3/gfx_init_plane_fill::gfxb#1, gfx_init_plane_fill::@5/gfx_init_plane_fill::gfxb#6 )
[729] gfx_init_plane_fill::by#4 = phi( gfx_init_plane_fill::@3/gfx_init_plane_fill::by#1, gfx_init_plane_fill::@5/0 )
[729] gfx_init_plane_fill::gfxb#3 = phi( gfx_init_plane_fill::@3/gfx_init_plane_fill::gfxb#1, gfx_init_plane_fill::@5/gfx_init_plane_fill::gfxb#6 )
to:gfx_init_plane_fill::@2
gfx_init_plane_fill::@2: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@1 gfx_init_plane_fill::@2
[750] gfx_init_plane_fill::bx#2 = phi( gfx_init_plane_fill::@1/0, gfx_init_plane_fill::@2/gfx_init_plane_fill::bx#1 )
[750] gfx_init_plane_fill::gfxb#2 = phi( gfx_init_plane_fill::@1/gfx_init_plane_fill::gfxb#3, gfx_init_plane_fill::@2/gfx_init_plane_fill::gfxb#1 )
[751] *gfx_init_plane_fill::gfxb#2 = gfx_init_plane_fill::fill#6
[752] gfx_init_plane_fill::gfxb#1 = ++ gfx_init_plane_fill::gfxb#2
[753] gfx_init_plane_fill::bx#1 = ++ gfx_init_plane_fill::bx#2
[754] if(gfx_init_plane_fill::bx#1!=$28) goto gfx_init_plane_fill::@2
[730] gfx_init_plane_fill::bx#2 = phi( gfx_init_plane_fill::@1/0, gfx_init_plane_fill::@2/gfx_init_plane_fill::bx#1 )
[730] gfx_init_plane_fill::gfxb#2 = phi( gfx_init_plane_fill::@1/gfx_init_plane_fill::gfxb#3, gfx_init_plane_fill::@2/gfx_init_plane_fill::gfxb#1 )
[731] *gfx_init_plane_fill::gfxb#2 = gfx_init_plane_fill::fill#6
[732] gfx_init_plane_fill::gfxb#1 = ++ gfx_init_plane_fill::gfxb#2
[733] gfx_init_plane_fill::bx#1 = ++ gfx_init_plane_fill::bx#2
[734] if(gfx_init_plane_fill::bx#1!=$28) goto gfx_init_plane_fill::@2
to:gfx_init_plane_fill::@3
gfx_init_plane_fill::@3: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@2
[755] gfx_init_plane_fill::by#1 = ++ gfx_init_plane_fill::by#4
[756] if(gfx_init_plane_fill::by#1!=$c8) goto gfx_init_plane_fill::@1
[735] gfx_init_plane_fill::by#1 = ++ gfx_init_plane_fill::by#4
[736] if(gfx_init_plane_fill::by#1!=$c8) goto gfx_init_plane_fill::@1
to:gfx_init_plane_fill::@4
gfx_init_plane_fill::@4: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@3
[757] phi()
[758] call dtvSetCpuBankSegment1
[737] phi()
[738] call dtvSetCpuBankSegment1
to:gfx_init_plane_fill::@return
gfx_init_plane_fill::@return: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@4
[759] return
[739] return
to:@return
void* memset(void* memset::str , byte memset::c , word memset::num)
memset: scope:[memset] from print_cls
[760] phi()
memset: scope:[memset] from bitmap_clear bitmap_clear::@1 print_cls
[740] memset::c#5 = phi( bitmap_clear/bitmap_clear::col#0, bitmap_clear::@1/0, print_cls/' ' )
[740] memset::str#4 = phi( bitmap_clear/(void*)VICII_SCREEN0, bitmap_clear::@1/(void*)VICII_BITMAP, print_cls/memset::str#0 )
[740] memset::num#3 = phi( bitmap_clear/$3e8, bitmap_clear::@1/$1f40, print_cls/$3e8 )
[741] if(memset::num#3<=0) goto memset::@return
to:memset::@1
memset::@1: scope:[memset] from memset
[761] memset::end#0 = (byte*)memset::str#0 + memset::num#0
[762] memset::dst#4 = (byte*)memset::str#0
[742] memset::end#0 = (byte*)memset::str#4 + memset::num#3
[743] memset::dst#4 = (byte*)memset::str#4
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[763] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
[764] if(memset::dst#2!=memset::end#0) goto memset::@3
[744] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
[745] if(memset::dst#2!=memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset::@2
[765] return
memset::@return: scope:[memset] from memset memset::@2
[746] return
to:@return
memset::@3: scope:[memset] from memset::@2
[766] *memset::dst#2 = memset::c#0
[767] memset::dst#1 = ++ memset::dst#2
[747] *memset::dst#2 = memset::c#5
[748] memset::dst#1 = ++ memset::dst#2
to:memset::@2
void print_char(byte print_char::ch)
print_char: scope:[print_char] from print_str_lines::@4
[768] *print_char_cursor#43 = print_char::ch#0
[769] print_char_cursor#29 = ++ print_char_cursor#43
[749] *print_char_cursor#43 = print_char::ch#0
[750] print_char_cursor#29 = ++ print_char_cursor#43
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[770] return
[751] return
to:@return
void print_ln()
print_ln: scope:[print_ln] from print_str_lines::@5
[771] phi()
[752] phi()
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[772] print_line_cursor#22 = phi( print_ln/print_line_cursor#1, print_ln::@1/print_line_cursor#2 )
[773] print_line_cursor#2 = print_line_cursor#22 + $28
[774] if(print_line_cursor#2<print_char_cursor#44) goto print_ln::@1
[753] print_line_cursor#22 = phi( print_ln/print_line_cursor#1, print_ln::@1/print_line_cursor#2 )
[754] print_line_cursor#2 = print_line_cursor#22 + $28
[755] if(print_line_cursor#2<print_char_cursor#44) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[775] return
[756] return
to:@return
byte* form_field_ptr(byte form_field_ptr::field_idx)
form_field_ptr: scope:[form_field_ptr] from form_control form_render_values::@2
[776] form_field_ptr::field_idx#2 = phi( form_control/form_field_ptr::field_idx#1, form_render_values::@2/form_field_ptr::field_idx#0 )
[777] form_field_ptr::y#0 = form_fields_y[form_field_ptr::field_idx#2]
[778] form_field_ptr::line#0 = form_line_hi[form_field_ptr::y#0] w= form_line_lo[form_field_ptr::y#0]
[779] form_field_ptr::x#0 = form_fields_x[form_field_ptr::field_idx#2]
[780] form_field_ptr::return#0 = (byte*)form_field_ptr::line#0 + form_field_ptr::x#0
[757] form_field_ptr::field_idx#2 = phi( form_control/form_field_ptr::field_idx#1, form_render_values::@2/form_field_ptr::field_idx#0 )
[758] form_field_ptr::y#0 = form_fields_y[form_field_ptr::field_idx#2]
[759] form_field_ptr::line#0 = form_line_hi[form_field_ptr::y#0] w= form_line_lo[form_field_ptr::y#0]
[760] form_field_ptr::x#0 = form_fields_x[form_field_ptr::field_idx#2]
[761] form_field_ptr::return#0 = (byte*)form_field_ptr::line#0 + form_field_ptr::x#0
to:form_field_ptr::@return
form_field_ptr::@return: scope:[form_field_ptr] from form_field_ptr
[781] return
[762] return
to:@return
void print_str_at(byte* print_str_at::str , byte* print_str_at::at)
print_str_at: scope:[print_str_at] from render_preset_name::@2
[782] phi()
[763] phi()
to:print_str_at::@1
print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2
[783] print_str_at::at#2 = phi( print_str_at/FORM_SCREEN+$28*2+$a, print_str_at::@2/print_str_at::at#0 )
[783] print_str_at::str#2 = phi( print_str_at/print_str_at::str#1, print_str_at::@2/print_str_at::str#0 )
[784] if(0!=*print_str_at::str#2) goto print_str_at::@2
[764] print_str_at::at#2 = phi( print_str_at/FORM_SCREEN+$28*2+$a, print_str_at::@2/print_str_at::at#0 )
[764] print_str_at::str#2 = phi( print_str_at/print_str_at::str#1, print_str_at::@2/print_str_at::str#0 )
[765] if(0!=*print_str_at::str#2) goto print_str_at::@2
to:print_str_at::@return
print_str_at::@return: scope:[print_str_at] from print_str_at::@1
[785] return
[766] return
to:@return
print_str_at::@2: scope:[print_str_at] from print_str_at::@1
[786] *print_str_at::at#2 = *print_str_at::str#2
[787] print_str_at::at#0 = ++ print_str_at::at#2
[788] print_str_at::str#0 = ++ print_str_at::str#2
[767] *print_str_at::at#2 = *print_str_at::str#2
[768] print_str_at::at#0 = ++ print_str_at::at#2
[769] print_str_at::str#0 = ++ print_str_at::str#2
to:print_str_at::@1
byte keyboard_matrix_read(byte keyboard_matrix_read::rowid)
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@7
[789] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0]
[790] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B)
[770] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0]
[771] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B)
to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
[791] return
[772] return
to:@return
byte keyboard_event_pressed(byte keyboard_event_pressed::keycode)
keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@1 keyboard_event_scan::@17 keyboard_event_scan::@2 keyboard_event_scan::@3
[792] keyboard_event_pressed::keycode#4 = phi( keyboard_event_scan::@1/KEY_RSHIFT, keyboard_event_scan::@17/KEY_LSHIFT, keyboard_event_scan::@2/KEY_CTRL, keyboard_event_scan::@3/KEY_COMMODORE )
[793] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#4 >> 3
[794] keyboard_event_pressed::row_bits#0 = keyboard_scan_values[keyboard_event_pressed::$0]
[795] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#4 & 7
[796] keyboard_event_pressed::return#10 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1]
[773] keyboard_event_pressed::keycode#4 = phi( keyboard_event_scan::@1/KEY_RSHIFT, keyboard_event_scan::@17/KEY_LSHIFT, keyboard_event_scan::@2/KEY_CTRL, keyboard_event_scan::@3/KEY_COMMODORE )
[774] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#4 >> 3
[775] keyboard_event_pressed::row_bits#0 = keyboard_scan_values[keyboard_event_pressed::$0]
[776] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#4 & 7
[777] keyboard_event_pressed::return#10 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1]
to:keyboard_event_pressed::@return
keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed
[797] return
[778] return
to:@return
void bitmap_line_ydxi(byte bitmap_line_ydxi::y , byte bitmap_line_ydxi::x , byte bitmap_line_ydxi::y1 , byte bitmap_line_ydxi::yd , byte bitmap_line_ydxi::xd)
bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@14 bitmap_line::@4
[798] bitmap_line_ydxi::y1#6 = phi( bitmap_line::@14/bitmap_line_ydxi::y1#1, bitmap_line::@4/bitmap_line_ydxi::y1#0 )
[798] bitmap_line_ydxi::yd#5 = phi( bitmap_line::@14/bitmap_line_ydxi::yd#1, bitmap_line::@4/bitmap_line_ydxi::yd#0 )
[798] bitmap_line_ydxi::y#6 = phi( bitmap_line::@14/bitmap_line_ydxi::y#1, bitmap_line::@4/bitmap_line_ydxi::y#0 )
[798] bitmap_line_ydxi::x#5 = phi( bitmap_line::@14/bitmap_line_ydxi::x#1, bitmap_line::@4/bitmap_line_ydxi::x#0 )
[798] bitmap_line_ydxi::xd#2 = phi( bitmap_line::@14/bitmap_line_ydxi::xd#1, bitmap_line::@4/bitmap_line_ydxi::xd#0 )
[799] bitmap_line_ydxi::e#0 = bitmap_line_ydxi::xd#2 >> 1
to:bitmap_line_ydxi::@1
bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2
[800] bitmap_line_ydxi::e#3 = phi( bitmap_line_ydxi/bitmap_line_ydxi::e#0, bitmap_line_ydxi::@2/bitmap_line_ydxi::e#6 )
[800] bitmap_line_ydxi::y#3 = phi( bitmap_line_ydxi/bitmap_line_ydxi::y#6, bitmap_line_ydxi::@2/bitmap_line_ydxi::y#2 )
[800] bitmap_line_ydxi::x#3 = phi( bitmap_line_ydxi/bitmap_line_ydxi::x#5, bitmap_line_ydxi::@2/bitmap_line_ydxi::x#6 )
[801] bitmap_plot::x#2 = bitmap_line_ydxi::x#3
[802] bitmap_plot::y#2 = bitmap_line_ydxi::y#3
[803] call bitmap_plot
to:bitmap_line_ydxi::@4
bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1
[804] bitmap_line_ydxi::y#2 = ++ bitmap_line_ydxi::y#3
[805] bitmap_line_ydxi::e#1 = bitmap_line_ydxi::e#3 + bitmap_line_ydxi::xd#2
[806] if(bitmap_line_ydxi::yd#5>=bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2
to:bitmap_line_ydxi::@3
bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4
[807] bitmap_line_ydxi::x#2 = ++ bitmap_line_ydxi::x#3
[808] bitmap_line_ydxi::e#2 = bitmap_line_ydxi::e#1 - bitmap_line_ydxi::yd#5
to:bitmap_line_ydxi::@2
bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4
[809] bitmap_line_ydxi::e#6 = phi( bitmap_line_ydxi::@3/bitmap_line_ydxi::e#2, bitmap_line_ydxi::@4/bitmap_line_ydxi::e#1 )
[809] bitmap_line_ydxi::x#6 = phi( bitmap_line_ydxi::@3/bitmap_line_ydxi::x#2, bitmap_line_ydxi::@4/bitmap_line_ydxi::x#3 )
[810] bitmap_line_ydxi::$6 = bitmap_line_ydxi::y1#6 + 1
[811] if(bitmap_line_ydxi::y#2!=bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1
to:bitmap_line_ydxi::@return
bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2
[812] return
word abs_u16(word abs_u16::w)
abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12
[779] abs_u16::w#2 = phi( bitmap_line/abs_u16::w#0, bitmap_line::@12/abs_u16::w#1 )
[780] abs_u16::$0 = > abs_u16::w#2
[781] abs_u16::$1 = abs_u16::$0 & $80
[782] if(0!=abs_u16::$1) goto abs_u16::@1
to:abs_u16::@return
abs_u16::@1: scope:[abs_u16] from abs_u16
[783] abs_u16::return#2 = - abs_u16::w#2
to:abs_u16::@return
abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1
[784] abs_u16::return#4 = phi( abs_u16::@1/abs_u16::return#2, abs_u16/abs_u16::w#2 )
[785] return
to:@return
void bitmap_line_xdyi(byte bitmap_line_xdyi::x , byte bitmap_line_xdyi::y , byte bitmap_line_xdyi::x1 , byte bitmap_line_xdyi::xd , byte bitmap_line_xdyi::yd)
bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@13 bitmap_line::@8
[813] bitmap_line_xdyi::x1#6 = phi( bitmap_line::@13/bitmap_line_xdyi::x1#1, bitmap_line::@8/bitmap_line_xdyi::x1#0 )
[813] bitmap_line_xdyi::xd#5 = phi( bitmap_line::@13/bitmap_line_xdyi::xd#1, bitmap_line::@8/bitmap_line_xdyi::xd#0 )
[813] bitmap_line_xdyi::y#5 = phi( bitmap_line::@13/bitmap_line_xdyi::y#1, bitmap_line::@8/bitmap_line_xdyi::y#0 )
[813] bitmap_line_xdyi::x#6 = phi( bitmap_line::@13/bitmap_line_xdyi::x#1, bitmap_line::@8/bitmap_line_xdyi::x#0 )
[813] bitmap_line_xdyi::yd#2 = phi( bitmap_line::@13/bitmap_line_xdyi::yd#1, bitmap_line::@8/bitmap_line_xdyi::yd#0 )
[814] bitmap_line_xdyi::e#0 = bitmap_line_xdyi::yd#2 >> 1
to:bitmap_line_xdyi::@1
bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2
[815] bitmap_line_xdyi::e#3 = phi( bitmap_line_xdyi/bitmap_line_xdyi::e#0, bitmap_line_xdyi::@2/bitmap_line_xdyi::e#6 )
[815] bitmap_line_xdyi::y#3 = phi( bitmap_line_xdyi/bitmap_line_xdyi::y#5, bitmap_line_xdyi::@2/bitmap_line_xdyi::y#6 )
[815] bitmap_line_xdyi::x#3 = phi( bitmap_line_xdyi/bitmap_line_xdyi::x#6, bitmap_line_xdyi::@2/bitmap_line_xdyi::x#2 )
[816] bitmap_plot::x#0 = bitmap_line_xdyi::x#3
[817] bitmap_plot::y#0 = bitmap_line_xdyi::y#3
[818] call bitmap_plot
to:bitmap_line_xdyi::@4
bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1
[819] bitmap_line_xdyi::x#2 = ++ bitmap_line_xdyi::x#3
[820] bitmap_line_xdyi::e#1 = bitmap_line_xdyi::e#3 + bitmap_line_xdyi::yd#2
[821] if(bitmap_line_xdyi::xd#5>=bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2
to:bitmap_line_xdyi::@3
bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4
[822] bitmap_line_xdyi::y#2 = ++ bitmap_line_xdyi::y#3
[823] bitmap_line_xdyi::e#2 = bitmap_line_xdyi::e#1 - bitmap_line_xdyi::xd#5
to:bitmap_line_xdyi::@2
bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4
[824] bitmap_line_xdyi::e#6 = phi( bitmap_line_xdyi::@3/bitmap_line_xdyi::e#2, bitmap_line_xdyi::@4/bitmap_line_xdyi::e#1 )
[824] bitmap_line_xdyi::y#6 = phi( bitmap_line_xdyi::@3/bitmap_line_xdyi::y#2, bitmap_line_xdyi::@4/bitmap_line_xdyi::y#3 )
[825] bitmap_line_xdyi::$6 = bitmap_line_xdyi::x1#6 + 1
[826] if(bitmap_line_xdyi::x#2!=bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1
to:bitmap_line_xdyi::@return
bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2
[827] return
word sgn_u16(word sgn_u16::w)
sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14
[786] sgn_u16::w#2 = phi( bitmap_line::@1/sgn_u16::w#0, bitmap_line::@14/sgn_u16::w#1 )
[787] sgn_u16::$0 = > sgn_u16::w#2
[788] sgn_u16::$1 = sgn_u16::$0 & $80
[789] if(0!=sgn_u16::$1) goto sgn_u16::@1
to:sgn_u16::@return
sgn_u16::@1: scope:[sgn_u16] from sgn_u16
[790] phi()
to:sgn_u16::@return
sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1
[791] sgn_u16::return#4 = phi( sgn_u16::@1/-1, sgn_u16/1 )
[792] return
to:@return
void bitmap_line_ydxd(byte bitmap_line_ydxd::y , byte bitmap_line_ydxd::x , byte bitmap_line_ydxd::y1 , byte bitmap_line_ydxd::yd , byte bitmap_line_ydxd::xd)
bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@10 bitmap_line::@6
[828] bitmap_line_ydxd::y1#6 = phi( bitmap_line::@10/bitmap_line_ydxd::y1#0, bitmap_line::@6/bitmap_line_ydxd::y1#1 )
[828] bitmap_line_ydxd::yd#5 = phi( bitmap_line::@10/bitmap_line_ydxd::yd#0, bitmap_line::@6/bitmap_line_ydxd::yd#1 )
[828] bitmap_line_ydxd::y#7 = phi( bitmap_line::@10/bitmap_line_ydxd::y#0, bitmap_line::@6/bitmap_line_ydxd::y#1 )
[828] bitmap_line_ydxd::x#5 = phi( bitmap_line::@10/bitmap_line_ydxd::x#0, bitmap_line::@6/bitmap_line_ydxd::x#1 )
[828] bitmap_line_ydxd::xd#2 = phi( bitmap_line::@10/bitmap_line_ydxd::xd#0, bitmap_line::@6/bitmap_line_ydxd::xd#1 )
[829] bitmap_line_ydxd::e#0 = bitmap_line_ydxd::xd#2 >> 1
to:bitmap_line_ydxd::@1
bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2
[830] bitmap_line_ydxd::e#3 = phi( bitmap_line_ydxd/bitmap_line_ydxd::e#0, bitmap_line_ydxd::@2/bitmap_line_ydxd::e#6 )
[830] bitmap_line_ydxd::y#2 = phi( bitmap_line_ydxd/bitmap_line_ydxd::y#7, bitmap_line_ydxd::@2/bitmap_line_ydxd::y#3 )
[830] bitmap_line_ydxd::x#3 = phi( bitmap_line_ydxd/bitmap_line_ydxd::x#5, bitmap_line_ydxd::@2/bitmap_line_ydxd::x#6 )
[831] bitmap_plot::x#3 = bitmap_line_ydxd::x#3
[832] bitmap_plot::y#3 = bitmap_line_ydxd::y#2
[833] call bitmap_plot
to:bitmap_line_ydxd::@4
bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1
[834] bitmap_line_ydxd::y#3 = ++ bitmap_line_ydxd::y#2
[835] bitmap_line_ydxd::e#1 = bitmap_line_ydxd::e#3 + bitmap_line_ydxd::xd#2
[836] if(bitmap_line_ydxd::yd#5>=bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2
to:bitmap_line_ydxd::@3
bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4
[837] bitmap_line_ydxd::x#2 = -- bitmap_line_ydxd::x#3
[838] bitmap_line_ydxd::e#2 = bitmap_line_ydxd::e#1 - bitmap_line_ydxd::yd#5
to:bitmap_line_ydxd::@2
bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4
[839] bitmap_line_ydxd::e#6 = phi( bitmap_line_ydxd::@3/bitmap_line_ydxd::e#2, bitmap_line_ydxd::@4/bitmap_line_ydxd::e#1 )
[839] bitmap_line_ydxd::x#6 = phi( bitmap_line_ydxd::@3/bitmap_line_ydxd::x#2, bitmap_line_ydxd::@4/bitmap_line_ydxd::x#3 )
[840] bitmap_line_ydxd::$6 = bitmap_line_ydxd::y1#6 + 1
[841] if(bitmap_line_ydxd::y#3!=bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1
to:bitmap_line_ydxd::@return
bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
[842] return
to:@return
void bitmap_line_xdyd(byte bitmap_line_xdyd::x , byte bitmap_line_xdyd::y , byte bitmap_line_xdyd::x1 , byte bitmap_line_xdyd::xd , byte bitmap_line_xdyd::yd)
bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@12 bitmap_line::@9
[843] bitmap_line_xdyd::x1#6 = phi( bitmap_line::@12/bitmap_line_xdyd::x1#1, bitmap_line::@9/bitmap_line_xdyd::x1#0 )
[843] bitmap_line_xdyd::xd#5 = phi( bitmap_line::@12/bitmap_line_xdyd::xd#1, bitmap_line::@9/bitmap_line_xdyd::xd#0 )
[843] bitmap_line_xdyd::y#5 = phi( bitmap_line::@12/bitmap_line_xdyd::y#1, bitmap_line::@9/bitmap_line_xdyd::y#0 )
[843] bitmap_line_xdyd::x#6 = phi( bitmap_line::@12/bitmap_line_xdyd::x#1, bitmap_line::@9/bitmap_line_xdyd::x#0 )
[843] bitmap_line_xdyd::yd#2 = phi( bitmap_line::@12/bitmap_line_xdyd::yd#1, bitmap_line::@9/bitmap_line_xdyd::yd#0 )
[844] bitmap_line_xdyd::e#0 = bitmap_line_xdyd::yd#2 >> 1
to:bitmap_line_xdyd::@1
bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2
[845] bitmap_line_xdyd::e#3 = phi( bitmap_line_xdyd/bitmap_line_xdyd::e#0, bitmap_line_xdyd::@2/bitmap_line_xdyd::e#6 )
[845] bitmap_line_xdyd::y#3 = phi( bitmap_line_xdyd/bitmap_line_xdyd::y#5, bitmap_line_xdyd::@2/bitmap_line_xdyd::y#6 )
[845] bitmap_line_xdyd::x#3 = phi( bitmap_line_xdyd/bitmap_line_xdyd::x#6, bitmap_line_xdyd::@2/bitmap_line_xdyd::x#2 )
[846] bitmap_plot::x#1 = bitmap_line_xdyd::x#3
[847] bitmap_plot::y#1 = bitmap_line_xdyd::y#3
[848] call bitmap_plot
to:bitmap_line_xdyd::@4
bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1
[849] bitmap_line_xdyd::x#2 = ++ bitmap_line_xdyd::x#3
[850] bitmap_line_xdyd::e#1 = bitmap_line_xdyd::e#3 + bitmap_line_xdyd::yd#2
[851] if(bitmap_line_xdyd::xd#5>=bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2
to:bitmap_line_xdyd::@3
bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4
[852] bitmap_line_xdyd::y#2 = -- bitmap_line_xdyd::y#3
[853] bitmap_line_xdyd::e#2 = bitmap_line_xdyd::e#1 - bitmap_line_xdyd::xd#5
to:bitmap_line_xdyd::@2
bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4
[854] bitmap_line_xdyd::e#6 = phi( bitmap_line_xdyd::@3/bitmap_line_xdyd::e#2, bitmap_line_xdyd::@4/bitmap_line_xdyd::e#1 )
[854] bitmap_line_xdyd::y#6 = phi( bitmap_line_xdyd::@3/bitmap_line_xdyd::y#2, bitmap_line_xdyd::@4/bitmap_line_xdyd::y#3 )
[855] bitmap_line_xdyd::$6 = bitmap_line_xdyd::x1#6 + 1
[856] if(bitmap_line_xdyd::x#2!=bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1
to:bitmap_line_xdyd::@return
bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2
[857] return
to:@return
void bitmap_plot(byte bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1
[858] bitmap_plot::y#4 = phi( bitmap_line_xdyd::@1/bitmap_plot::y#1, bitmap_line_xdyi::@1/bitmap_plot::y#0, bitmap_line_ydxd::@1/bitmap_plot::y#3, bitmap_line_ydxi::@1/bitmap_plot::y#2 )
[858] bitmap_plot::x#4 = phi( bitmap_line_xdyd::@1/bitmap_plot::x#1, bitmap_line_xdyi::@1/bitmap_plot::x#0, bitmap_line_ydxd::@1/bitmap_plot::x#3, bitmap_line_ydxi::@1/bitmap_plot::x#2 )
[859] bitmap_plot::plotter_x#0 = bitmap_plot_xhi[bitmap_plot::x#4] w= bitmap_plot_xlo[bitmap_plot::x#4]
[860] bitmap_plot::plotter_y#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
[861] bitmap_plot::plotter#0 = bitmap_plot::plotter_x#0 + bitmap_plot::plotter_y#0
[862] bitmap_plot::$1 = *((byte*)bitmap_plot::plotter#0) | bitmap_plot_bit[bitmap_plot::x#4]
[863] *((byte*)bitmap_plot::plotter#0) = bitmap_plot::$1
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
[793] bitmap_plot::x#4 = phi( bitmap_line::@3/bitmap_plot::x#2, bitmap_line::@4/bitmap_plot::x#0, bitmap_line::@6/bitmap_plot::x#1, bitmap_line::@9/bitmap_plot::x#3 )
[793] bitmap_plot::y#4 = phi( bitmap_line::@3/bitmap_plot::y#2, bitmap_line::@4/bitmap_plot::y#0, bitmap_line::@6/bitmap_plot::y#1, bitmap_line::@9/bitmap_plot::y#3 )
[794] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
[795] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
[796] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
[797] bitmap_plot::$1 = < bitmap_plot::x#4
[798] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[864] return
[799] return
to:@return

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -77,214 +77,115 @@ const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void bitmap_clear()
byte* bitmap_clear::bitmap
word bitmap_clear::bitmap#0 bitmap zp[2]:17 10001.0
byte* bitmap_clear::bitmap#1 bitmap zp[2]:17 4200000.6
byte* bitmap_clear::bitmap#2 bitmap zp[2]:17 1.5500002E7
byte* bitmap_clear::bitmap#3 bitmap zp[2]:17 2010003.0
byte* bitmap_clear::bitmap#5 bitmap zp[2]:17 20002.0
byte bitmap_clear::x
byte bitmap_clear::x#1 reg byte x 1.50000015E7
byte bitmap_clear::x#2 reg byte x 6666667.333333333
byte bitmap_clear::y
byte bitmap_clear::y#1 y zp[1]:16 1500001.5
byte bitmap_clear::y#4 y zp[1]:16 333333.6666666667
void bitmap_init(byte* bitmap_init::bitmap)
byte~ bitmap_init::$0 reg byte a 2000002.0
byte~ bitmap_init::$10 zp[1]:16 500000.5
byte~ bitmap_init::$7 reg byte a 2000002.0
byte~ bitmap_init::$8 reg byte a 2000002.0
byte~ bitmap_init::$9 reg byte a 2000002.0
byte* bitmap_init::bitmap
const nomodify byte WHITE = 1
word abs_u16(word abs_u16::w)
byte~ abs_u16::$0 reg byte a 2.0000002E7
byte~ abs_u16::$1 reg byte a 2.0000002E7
word abs_u16::return
word abs_u16::return#0 return zp[2]:15 2000002.0
word abs_u16::return#1 return zp[2]:15 2000002.0
word abs_u16::return#2 return zp[2]:15 2.0000002E7
word abs_u16::return#4 return zp[2]:15 5500001.0
word abs_u16::w
word abs_u16::w#0 w zp[2]:15 2000002.0
word abs_u16::w#1 w zp[2]:15 2000002.0
word abs_u16::w#2 w zp[2]:15 8000001.25
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
byte bitmap_clear::bgcol
byte bitmap_clear::col
const byte bitmap_clear::col#0 col = WHITE*$10
byte bitmap_clear::fgcol
byte* bitmap_gfx
byte* bitmap_gfx#14 bitmap_gfx zp[2]:4 10.485981308411215
byte* bitmap_gfx#15 bitmap_gfx zp[2]:4 374.0
void bitmap_init(byte* bitmap_init::gfx , byte* bitmap_init::screen)
byte~ bitmap_init::$4 reg byte a 2000002.0
byte~ bitmap_init::$5 reg byte a 2000002.0
byte~ bitmap_init::$6 reg byte a 2000002.0
byte~ bitmap_init::$7 zp[1]:28 500000.5
byte bitmap_init::bits
byte bitmap_init::bits#1 reg byte y 1000001.0
byte bitmap_init::bits#3 reg byte y 600000.6000000001
byte bitmap_init::bits#4 reg byte y 666667.3333333334
byte bitmap_init::bits#1 reg byte a 1000001.0
byte bitmap_init::bits#3 reg byte a 1500001.5
byte bitmap_init::bits#4 reg byte a 666667.3333333334
byte* bitmap_init::gfx
byte* bitmap_init::screen
byte bitmap_init::x
byte bitmap_init::x#1 reg byte x 1500001.5
byte bitmap_init::x#2 reg byte x 666667.3333333334
byte bitmap_init::x#2 reg byte x 500000.5
byte bitmap_init::y
byte bitmap_init::y#1 reg byte x 1500001.5
byte bitmap_init::y#2 reg byte x 500000.5
byte* bitmap_init::yoffs
byte* bitmap_init::yoffs#1 yoffs zp[2]:17 2000002.0
byte* bitmap_init::yoffs#2 yoffs zp[2]:17 625000.625
byte* bitmap_init::yoffs#4 yoffs zp[2]:17 1000001.0
void bitmap_line(byte bitmap_line::x0 , byte bitmap_line::x1 , byte bitmap_line::y0 , byte bitmap_line::y1)
byte bitmap_line::x0
byte bitmap_line::x0#0 x0 zp[1]:15 395652.6086956522
byte bitmap_line::x1
byte bitmap_line::x1#0 x1 zp[1]:16 413636.81818181823
byte bitmap_line::xd
byte bitmap_line::xd#1 xd zp[1]:12 350000.35
byte bitmap_line::xd#2 xd zp[1]:12 350000.35
byte bitmap_line::y0
byte bitmap_line::y0#0 reg byte x 576191.0952380954
byte bitmap_line::y1
byte bitmap_line::y1#0 y1 zp[1]:14 605000.65
byte bitmap_line::yd
byte bitmap_line::yd#1 reg byte y 444444.8888888889
byte bitmap_line::yd#10 reg byte y 444444.8888888889
byte bitmap_line::yd#11 reg byte y 444444.8888888889
byte bitmap_line::yd#2 reg byte y 444444.8888888889
void bitmap_line_xdyd(byte bitmap_line_xdyd::x , byte bitmap_line_xdyd::y , byte bitmap_line_xdyd::x1 , byte bitmap_line_xdyd::xd , byte bitmap_line_xdyd::yd)
byte~ bitmap_line_xdyd::$6 reg byte a 2.0000000002E10
byte bitmap_line_xdyd::e
byte bitmap_line_xdyd::e#0 e zp[1]:11 2.0000002E7
byte bitmap_line_xdyd::e#1 e zp[1]:11 1.3333333334666666E10
byte bitmap_line_xdyd::e#2 e zp[1]:11 2.0000000002E10
byte bitmap_line_xdyd::e#3 e zp[1]:11 4.0020000006000004E9
byte bitmap_line_xdyd::e#6 e zp[1]:11 1.0000000001E10
byte bitmap_line_xdyd::x
byte bitmap_line_xdyd::x#0 x zp[1]:13 400000.4
byte bitmap_line_xdyd::x#1 x zp[1]:13 400000.4
byte bitmap_line_xdyd::x#2 x zp[1]:13 3.750000000375E9
byte bitmap_line_xdyd::x#3 x zp[1]:13 7.502500001E9
byte bitmap_line_xdyd::x#6 x zp[1]:13 6000001.5
byte bitmap_line_xdyd::x1
byte bitmap_line_xdyd::x1#0 x1 zp[1]:15 666667.3333333334
byte bitmap_line_xdyd::x1#1 x1 zp[1]:15 666667.3333333334
byte bitmap_line_xdyd::x1#6 x1 zp[1]:15 7.144285716428571E8
byte bitmap_line_xdyd::xd
byte bitmap_line_xdyd::xd#0 xd zp[1]:12 1000001.0
byte bitmap_line_xdyd::xd#1 xd zp[1]:12 1000001.0
byte bitmap_line_xdyd::xd#5 xd zp[1]:12 1.428714286E9
byte bitmap_line_xdyd::y
byte bitmap_line_xdyd::y#0 reg byte x 500000.5
byte bitmap_line_xdyd::y#1 reg byte x 500000.5
byte bitmap_line_xdyd::y#2 reg byte x 1.0000000001E10
byte bitmap_line_xdyd::y#3 reg byte x 5.715714286428572E9
byte bitmap_line_xdyd::y#5 reg byte x 6000001.5
byte bitmap_line_xdyd::y#6 reg byte x 1.0000000001E10
byte bitmap_line_xdyd::yd
byte bitmap_line_xdyd::yd#0 yd zp[1]:10 2000002.0
byte bitmap_line_xdyd::yd#1 yd zp[1]:10 2000002.0
byte bitmap_line_xdyd::yd#2 yd zp[1]:10 7.151428574285713E8
void bitmap_line_xdyi(byte bitmap_line_xdyi::x , byte bitmap_line_xdyi::y , byte bitmap_line_xdyi::x1 , byte bitmap_line_xdyi::xd , byte bitmap_line_xdyi::yd)
byte~ bitmap_line_xdyi::$6 reg byte a 2.0000000002E10
byte bitmap_line_xdyi::e
byte bitmap_line_xdyi::e#0 e zp[1]:11 2.0000002E7
byte bitmap_line_xdyi::e#1 e zp[1]:11 1.3333333334666666E10
byte bitmap_line_xdyi::e#2 e zp[1]:11 2.0000000002E10
byte bitmap_line_xdyi::e#3 e zp[1]:11 4.0020000006000004E9
byte bitmap_line_xdyi::e#6 e zp[1]:11 1.0000000001E10
byte bitmap_line_xdyi::x
byte bitmap_line_xdyi::x#0 x zp[1]:10 400000.4
byte bitmap_line_xdyi::x#1 x zp[1]:10 400000.4
byte bitmap_line_xdyi::x#2 x zp[1]:10 3.750000000375E9
byte bitmap_line_xdyi::x#3 x zp[1]:10 7.502500001E9
byte bitmap_line_xdyi::x#6 x zp[1]:10 6000001.5
byte bitmap_line_xdyi::x1
byte bitmap_line_xdyi::x1#0 x1 zp[1]:16 666667.3333333334
byte bitmap_line_xdyi::x1#1 x1 zp[1]:16 666667.3333333334
byte bitmap_line_xdyi::x1#6 x1 zp[1]:16 7.144285716428571E8
byte bitmap_line_xdyi::xd
byte bitmap_line_xdyi::xd#0 xd zp[1]:12 1000001.0
byte bitmap_line_xdyi::xd#1 xd zp[1]:12 1000001.0
byte bitmap_line_xdyi::xd#5 xd zp[1]:12 1.428714286E9
byte bitmap_line_xdyi::y
byte bitmap_line_xdyi::y#0 reg byte x 500000.5
byte bitmap_line_xdyi::y#1 reg byte x 500000.5
byte bitmap_line_xdyi::y#2 reg byte x 1.0000000001E10
byte bitmap_line_xdyi::y#3 reg byte x 5.715714286428572E9
byte bitmap_line_xdyi::y#5 reg byte x 6000001.5
byte bitmap_line_xdyi::y#6 reg byte x 1.0000000001E10
byte bitmap_line_xdyi::yd
byte bitmap_line_xdyi::yd#0 yd zp[1]:13 2000002.0
byte bitmap_line_xdyi::yd#1 yd zp[1]:13 2000002.0
byte bitmap_line_xdyi::yd#2 yd zp[1]:13 7.151428574285713E8
void bitmap_line_ydxd(byte bitmap_line_ydxd::y , byte bitmap_line_ydxd::x , byte bitmap_line_ydxd::y1 , byte bitmap_line_ydxd::yd , byte bitmap_line_ydxd::xd)
byte~ bitmap_line_ydxd::$6 reg byte x 2.0000000002E10
byte bitmap_line_ydxd::e
byte bitmap_line_ydxd::e#0 e zp[1]:13 2.0000002E7
byte bitmap_line_ydxd::e#1 e zp[1]:13 1.3333333334666666E10
byte bitmap_line_ydxd::e#2 e zp[1]:13 2.0000000002E10
byte bitmap_line_ydxd::e#3 e zp[1]:13 4.0020000006000004E9
byte bitmap_line_ydxd::e#6 e zp[1]:13 1.0000000001E10
byte bitmap_line_ydxd::x
byte bitmap_line_ydxd::x#0 x zp[1]:15 500000.5
byte bitmap_line_ydxd::x#1 x zp[1]:15 500000.5
byte bitmap_line_ydxd::x#2 x zp[1]:15 1.0000000001E10
byte bitmap_line_ydxd::x#3 x zp[1]:15 5.715714286428572E9
byte bitmap_line_ydxd::x#5 x zp[1]:15 6000001.5
byte bitmap_line_ydxd::x#6 x zp[1]:15 1.0000000001E10
byte bitmap_line_ydxd::xd
byte bitmap_line_ydxd::xd#0 xd zp[1]:12 2000002.0
byte bitmap_line_ydxd::xd#1 xd zp[1]:12 2000002.0
byte bitmap_line_ydxd::xd#2 xd zp[1]:12 7.151428574285713E8
byte bitmap_line_ydxd::y
byte bitmap_line_ydxd::y#0 y zp[1]:10 400000.4
byte bitmap_line_ydxd::y#1 y zp[1]:10 400000.4
byte bitmap_line_ydxd::y#2 y zp[1]:10 7.502500001E9
byte bitmap_line_ydxd::y#3 y zp[1]:10 3.750000000375E9
byte bitmap_line_ydxd::y#7 y zp[1]:10 6000001.5
byte bitmap_line_ydxd::y1
byte bitmap_line_ydxd::y1#0 y1 zp[1]:14 666667.3333333334
byte bitmap_line_ydxd::y1#1 y1 zp[1]:14 666667.3333333334
byte bitmap_line_ydxd::y1#6 y1 zp[1]:14 7.144285716428571E8
byte bitmap_line_ydxd::yd
byte bitmap_line_ydxd::yd#0 yd zp[1]:11 1000001.0
byte bitmap_line_ydxd::yd#1 yd zp[1]:11 1000001.0
byte bitmap_line_ydxd::yd#5 yd zp[1]:11 1.428714286E9
void bitmap_line_ydxi(byte bitmap_line_ydxi::y , byte bitmap_line_ydxi::x , byte bitmap_line_ydxi::y1 , byte bitmap_line_ydxi::yd , byte bitmap_line_ydxi::xd)
byte~ bitmap_line_ydxi::$6 reg byte x 2.0000000002E10
byte bitmap_line_ydxi::e
byte bitmap_line_ydxi::e#0 e zp[1]:16 2.0000002E7
byte bitmap_line_ydxi::e#1 e zp[1]:16 1.3333333334666666E10
byte bitmap_line_ydxi::e#2 e zp[1]:16 2.0000000002E10
byte bitmap_line_ydxi::e#3 e zp[1]:16 4.0020000006000004E9
byte bitmap_line_ydxi::e#6 e zp[1]:16 1.0000000001E10
byte bitmap_line_ydxi::x
byte bitmap_line_ydxi::x#0 x zp[1]:15 500000.5
byte bitmap_line_ydxi::x#1 x zp[1]:15 500000.5
byte bitmap_line_ydxi::x#2 x zp[1]:15 1.0000000001E10
byte bitmap_line_ydxi::x#3 x zp[1]:15 5.715714286428572E9
byte bitmap_line_ydxi::x#5 x zp[1]:15 6000001.5
byte bitmap_line_ydxi::x#6 x zp[1]:15 1.0000000001E10
byte bitmap_line_ydxi::xd
byte bitmap_line_ydxi::xd#0 xd zp[1]:12 2000002.0
byte bitmap_line_ydxi::xd#1 xd zp[1]:12 2000002.0
byte bitmap_line_ydxi::xd#2 xd zp[1]:12 7.151428574285713E8
byte bitmap_line_ydxi::y
byte bitmap_line_ydxi::y#0 y zp[1]:10 400000.4
byte bitmap_line_ydxi::y#1 y zp[1]:10 400000.4
byte bitmap_line_ydxi::y#2 y zp[1]:10 3.750000000375E9
byte bitmap_line_ydxi::y#3 y zp[1]:10 7.502500001E9
byte bitmap_line_ydxi::y#6 y zp[1]:10 6000001.5
byte bitmap_line_ydxi::y1
byte bitmap_line_ydxi::y1#0 y1 zp[1]:14 666667.3333333334
byte bitmap_line_ydxi::y1#1 y1 zp[1]:14 666667.3333333334
byte bitmap_line_ydxi::y1#6 y1 zp[1]:14 7.144285716428571E8
byte bitmap_line_ydxi::yd
byte bitmap_line_ydxi::yd#0 yd zp[1]:13 1000001.0
byte bitmap_line_ydxi::yd#1 yd zp[1]:13 1000001.0
byte bitmap_line_ydxi::yd#5 yd zp[1]:13 1.428714286E9
void bitmap_plot(byte bitmap_plot::x , byte bitmap_plot::y)
byte~ bitmap_plot::$1 reg byte a 2.00000000002E11
byte* bitmap_init::yoffs#1 yoffs zp[2]:11 2000002.0
byte* bitmap_init::yoffs#2 yoffs zp[2]:11 625000.625
byte* bitmap_init::yoffs#4 yoffs zp[2]:11 1000001.0
void bitmap_line(word bitmap_line::x1 , word bitmap_line::y1 , word bitmap_line::x2 , word bitmap_line::y2)
word bitmap_line::dx
word bitmap_line::dx#0 dx zp[2]:29 7.5100000175E7
word bitmap_line::dy
word bitmap_line::dy#0 dy zp[2]:15 8.344444463888888E7
word bitmap_line::e
word bitmap_line::e#0 e zp[2]:26 2000002.0
word bitmap_line::e#1 e zp[2]:26 1.3333333346666667E9
word bitmap_line::e#2 e zp[2]:26 2.000000002E9
word bitmap_line::e#3 e zp[2]:26 4.0020000059999996E8
word bitmap_line::e#6 e zp[2]:26 1.5000000015E9
word bitmap_line::e1
word bitmap_line::e1#0 e1 zp[2]:13 2000002.0
word bitmap_line::e1#1 e1 zp[2]:13 1.3333333346666667E9
word bitmap_line::e1#2 e1 zp[2]:13 2.000000002E9
word bitmap_line::e1#3 e1 zp[2]:13 4.0020000059999996E8
word bitmap_line::e1#6 e1 zp[2]:13 1.5000000015E9
word bitmap_line::sx
word bitmap_line::sx#0 sx zp[2]:31 6.67000001E7
word bitmap_line::sy
word bitmap_line::sy#0 sy zp[2]:17 7.696153857692307E7
word bitmap_line::x
word bitmap_line::x#1 x zp[2]:9 1.000000001E9
word bitmap_line::x#12 x zp[2]:9 2.000000002E9
word bitmap_line::x#13 x zp[2]:9 5.715714292857143E8
word bitmap_line::x#15 x zp[2]:9 5.71428572E8
word bitmap_line::x#6 x zp[2]:9 2.001000003E9
word bitmap_line::x#7 x zp[2]:9 7.50250001E8
word bitmap_line::x1
word bitmap_line::x1#0 x1 zp[2]:9 204000.24000000002
word bitmap_line::x2
word bitmap_line::x2#0 x2 zp[2]:19 3.0366666787878785E7
word bitmap_line::y
word bitmap_line::y#1 y zp[2]:11 5.71428572E8
word bitmap_line::y#13 y zp[2]:11 2.000000002E9
word bitmap_line::y#15 y zp[2]:11 4.2871428628571427E8
word bitmap_line::y#2 y zp[2]:11 1.000000001E9
word bitmap_line::y#4 y zp[2]:11 5.0025000075E8
word bitmap_line::y#7 y zp[2]:11 1.000000001E9
word bitmap_line::y1
word bitmap_line::y1#0 y1 zp[2]:11 164000.2
word bitmap_line::y2
word bitmap_line::y2#0 y2 zp[2]:21 3.1315625125E7
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 zp[2]:35 2.0000000002E10
byte~ bitmap_plot::$1 reg byte x 2.0000000002E10
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 plotter zp[2]:17 5.00000000005E10
word bitmap_plot::plotter_x
word bitmap_plot::plotter_x#0 plotter_x zp[2]:17 1.00000000001E11
word bitmap_plot::plotter_y
word bitmap_plot::plotter_y#0 plotter_y zp[2]:19 2.00000000002E11
byte bitmap_plot::x
byte bitmap_plot::x#0 reg byte y 1.0000000001E10
byte bitmap_plot::x#1 reg byte y 1.0000000001E10
byte bitmap_plot::x#2 reg byte y 1.0000000001E10
byte bitmap_plot::x#3 reg byte y 1.0000000001E10
byte bitmap_plot::x#4 reg byte y 8.500000000175E10
word bitmap_plot::plotter#0 plotter zp[2]:33 5.0000000005E9
byte* bitmap_plot::plotter#1 plotter zp[2]:33 1.50000000015E10
word bitmap_plot::x
word bitmap_plot::x#0 x zp[2]:9 1000001.0
word bitmap_plot::x#1 x zp[2]:9 1.000000001E9
word bitmap_plot::x#2 x zp[2]:9 1000001.0
word bitmap_plot::x#3 x zp[2]:9 1.000000001E9
word bitmap_plot::x#4 x zp[2]:9 5.5005000015E9
byte bitmap_plot::y
byte bitmap_plot::y#0 reg byte x 2.0000000002E10
byte bitmap_plot::y#1 reg byte x 2.0000000002E10
byte bitmap_plot::y#2 reg byte x 2.0000000002E10
byte bitmap_plot::y#3 reg byte x 2.0000000002E10
byte bitmap_plot::y#4 reg byte x 1.20000000003E11
byte bitmap_plot::y#0 reg byte a 2000002.0
byte bitmap_plot::y#1 reg byte a 2.000000002E9
byte bitmap_plot::y#2 reg byte a 2000002.0
byte bitmap_plot::y#3 reg byte a 2.000000002E9
byte bitmap_plot::y#4 reg byte a 2.2002000006E10
const to_nomodify byte* bitmap_plot_bit[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_xhi[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_xlo[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_yhi[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_ylo[$100] = { fill( $100, 0) }
byte* bitmap_screen
byte* bitmap_screen#14 bitmap_screen zp[2]:11 10.485981308411215
byte* bitmap_screen#15 bitmap_screen zp[2]:11 374.0
void dtvSetCpuBankSegment1(byte dtvSetCpuBankSegment1::cpuBankIdx)
const byte* dtvSetCpuBankSegment1::cpuBank = (byte*) 255
byte dtvSetCpuBankSegment1::cpuBankIdx
@ -297,7 +198,7 @@ byte dtv_control#16 reg byte x 666667.3333333334
byte keyboard_key_pressed(byte keyboard_key_pressed::key)
byte~ keyboard_key_pressed::$2 reg byte a 2.00000002E8
byte keyboard_key_pressed::colidx
byte keyboard_key_pressed::colidx#0 colidx zp[1]:14 3.3333333666666668E7
byte keyboard_key_pressed::colidx#0 colidx zp[1]:28 3.3333333666666668E7
byte keyboard_key_pressed::key
byte keyboard_key_pressed::key#20 reg byte y 1.00000001E8
byte keyboard_key_pressed::return
@ -336,17 +237,18 @@ const byte* keyboard_matrix_row_bitmask[8] = { $fe, $fd, $fb, $f7, $ef, $df, $b
void main()
void* memset(void* memset::str , byte memset::c , word memset::num)
byte memset::c
const byte memset::c#0 c = ' '
byte memset::c#5 reg byte x 1250000.125
byte* memset::dst
byte* memset::dst#1 dst zp[2]:17 2000002.0
byte* memset::dst#2 dst zp[2]:17 1333334.6666666667
byte* memset::dst#1 dst zp[2]:9 2.0000002E7
byte* memset::dst#2 dst zp[2]:9 1.3366668333333332E7
byte* memset::dst#4 dst zp[2]:9 200002.0
byte* memset::end
const byte* memset::end#0 end = (byte*)memset::str#0+memset::num#0
byte* memset::end#0 end zp[2]:15 1683333.6666666665
word memset::num
const word memset::num#0 num = $3e8
word memset::num#3 num zp[2]:15 100001.0
void* memset::return
void* memset::str
const void* memset::str#0 str = (void*)menu::SCREEN
void* memset::str#4 str zp[2]:9
void menu()
byte~ menu::$13 reg byte a 20002.0
byte~ menu::$17 reg byte a 20002.0
@ -369,15 +271,15 @@ byte menu::i
byte menu::i#1 reg byte x 15001.5
byte menu::i#2 reg byte x 20002.0
void mode_8bppchunkybmm()
word~ mode_8bppchunkybmm::$7 zp[2]:17 1000001.0
word~ mode_8bppchunkybmm::$7 zp[2]:26 1000001.0
const nomodify dword mode_8bppchunkybmm::PLANEB = $20000
byte mode_8bppchunkybmm::c
byte mode_8bppchunkybmm::c#0 reg byte a 2000002.0
byte* mode_8bppchunkybmm::gfxb
byte* mode_8bppchunkybmm::gfxb#1 gfxb zp[2]:8 420000.60000000003
byte* mode_8bppchunkybmm::gfxb#3 gfxb zp[2]:8 1550002.0
byte* mode_8bppchunkybmm::gfxb#4 gfxb zp[2]:8 750000.75
byte* mode_8bppchunkybmm::gfxb#5 gfxb zp[2]:8 200002.0
byte* mode_8bppchunkybmm::gfxb#1 gfxb zp[2]:15 420000.60000000003
byte* mode_8bppchunkybmm::gfxb#3 gfxb zp[2]:15 1550002.0
byte* mode_8bppchunkybmm::gfxb#4 gfxb zp[2]:15 750000.75
byte* mode_8bppchunkybmm::gfxb#5 gfxb zp[2]:15 200002.0
byte mode_8bppchunkybmm::gfxbCpuBank
byte mode_8bppchunkybmm::gfxbCpuBank#2 reg byte x 2000002.0
byte mode_8bppchunkybmm::gfxbCpuBank#4 reg byte x 1025001.25
@ -387,14 +289,14 @@ byte mode_8bppchunkybmm::i
byte mode_8bppchunkybmm::i#1 reg byte x 150001.5
byte mode_8bppchunkybmm::i#2 reg byte x 200002.0
word mode_8bppchunkybmm::x
word mode_8bppchunkybmm::x#1 x zp[2]:19 1500001.5
word mode_8bppchunkybmm::x#2 x zp[2]:19 300000.30000000005
word mode_8bppchunkybmm::x#1 x zp[2]:13 1500001.5
word mode_8bppchunkybmm::x#2 x zp[2]:13 300000.30000000005
byte mode_8bppchunkybmm::y
byte mode_8bppchunkybmm::y#1 y zp[1]:13 150001.5
byte mode_8bppchunkybmm::y#6 y zp[1]:13 92307.92307692306
byte mode_8bppchunkybmm::y#1 y zp[1]:23 150001.5
byte mode_8bppchunkybmm::y#6 y zp[1]:23 92307.92307692306
void mode_8bpppixelcell()
byte~ mode_8bpppixelcell::$2 reg byte a 2000002.0
byte~ mode_8bpppixelcell::$3 zp[1]:15 1000001.0
byte~ mode_8bpppixelcell::$3 zp[1]:28 1000001.0
byte~ mode_8bpppixelcell::$4 reg byte a 2000002.0
byte~ mode_8bpppixelcell::$5 reg byte a 2000002.0
byte~ mode_8bpppixelcell::$8 reg byte a 2.0000002E7
@ -408,9 +310,9 @@ byte mode_8bpppixelcell::ay
byte mode_8bpppixelcell::ay#1 ay zp[1]:6 150001.5
byte mode_8bpppixelcell::ay#4 ay zp[1]:6 120000.30000000002
byte mode_8bpppixelcell::bits
byte mode_8bpppixelcell::bits#0 bits zp[1]:13 1000001.0
byte mode_8bpppixelcell::bits#1 bits zp[1]:13 5000000.5
byte mode_8bpppixelcell::bits#2 bits zp[1]:13 4428572.0
byte mode_8bpppixelcell::bits#0 bits zp[1]:23 1000001.0
byte mode_8bpppixelcell::bits#1 bits zp[1]:23 5000000.5
byte mode_8bpppixelcell::bits#2 bits zp[1]:23 4428572.0
byte mode_8bpppixelcell::c
byte mode_8bpppixelcell::c#2 reg byte a 2.0000002E7
byte mode_8bpppixelcell::c#3 reg byte a 2.0000002E7
@ -418,29 +320,29 @@ byte mode_8bpppixelcell::ch
byte mode_8bpppixelcell::ch#1 ch zp[1]:7 150001.5
byte mode_8bpppixelcell::ch#8 ch zp[1]:7 11764.823529411764
byte* mode_8bpppixelcell::chargen
byte* mode_8bpppixelcell::chargen#1 chargen zp[2]:19 131250.1875
byte* mode_8bpppixelcell::chargen#2 chargen zp[2]:19 1550002.0
byte* mode_8bpppixelcell::chargen#4 chargen zp[2]:19 200002.0
byte* mode_8bpppixelcell::chargen#1 chargen zp[2]:15 131250.1875
byte* mode_8bpppixelcell::chargen#2 chargen zp[2]:15 1550002.0
byte* mode_8bpppixelcell::chargen#4 chargen zp[2]:15 200002.0
byte mode_8bpppixelcell::col
byte mode_8bpppixelcell::col#1 col zp[1]:16 3014286.2857142854
byte mode_8bpppixelcell::col#2 col zp[1]:16 3875000.5
byte mode_8bpppixelcell::col#5 col zp[1]:16 700001.0
byte mode_8bpppixelcell::col#7 col zp[1]:16 200002.0
byte mode_8bpppixelcell::col#1 col zp[1]:24 3014286.2857142854
byte mode_8bpppixelcell::col#2 col zp[1]:24 3875000.5
byte mode_8bpppixelcell::col#5 col zp[1]:24 700001.0
byte mode_8bpppixelcell::col#7 col zp[1]:24 200002.0
byte mode_8bpppixelcell::cp
byte mode_8bpppixelcell::cp#1 reg byte x 1.50000015E7
byte mode_8bpppixelcell::cp#2 reg byte x 2222222.4444444445
byte mode_8bpppixelcell::cr
byte mode_8bpppixelcell::cr#1 cr zp[1]:10 1500001.5
byte mode_8bpppixelcell::cr#6 cr zp[1]:10 142857.2857142857
byte mode_8bpppixelcell::cr#1 cr zp[1]:8 1500001.5
byte mode_8bpppixelcell::cr#6 cr zp[1]:8 142857.2857142857
byte* mode_8bpppixelcell::gfxa
byte* mode_8bpppixelcell::gfxa#1 gfxa zp[2]:17 420000.60000000003
byte* mode_8bpppixelcell::gfxa#2 gfxa zp[2]:17 516667.3333333334
byte* mode_8bpppixelcell::gfxa#3 gfxa zp[2]:17 200002.0
byte* mode_8bpppixelcell::gfxa#1 gfxa zp[2]:9 420000.60000000003
byte* mode_8bpppixelcell::gfxa#2 gfxa zp[2]:9 516667.3333333334
byte* mode_8bpppixelcell::gfxa#3 gfxa zp[2]:9 200002.0
byte* mode_8bpppixelcell::gfxb
byte* mode_8bpppixelcell::gfxb#1 gfxb zp[2]:8 2344444.888888889
byte* mode_8bpppixelcell::gfxb#2 gfxb zp[2]:8 5166667.333333333
byte* mode_8bpppixelcell::gfxb#5 gfxb zp[2]:8 700001.0
byte* mode_8bpppixelcell::gfxb#7 gfxb zp[2]:8 200002.0
byte* mode_8bpppixelcell::gfxb#1 gfxb zp[2]:13 2344444.888888889
byte* mode_8bpppixelcell::gfxb#2 gfxb zp[2]:13 5166667.333333333
byte* mode_8bpppixelcell::gfxb#5 gfxb zp[2]:13 700001.0
byte* mode_8bpppixelcell::gfxb#7 gfxb zp[2]:13 200002.0
byte mode_8bpppixelcell::i
byte mode_8bpppixelcell::i#1 reg byte x 150001.5
byte mode_8bpppixelcell::i#2 reg byte x 200002.0
@ -454,38 +356,38 @@ byte~ mode_ctrl::$28 reg byte a 2.0000002E7
byte~ mode_ctrl::$4 reg byte a 2.0000002E7
byte~ mode_ctrl::$8 reg byte a 2.0000002E7
byte mode_ctrl::ctrl
byte mode_ctrl::ctrl#0 ctrl zp[1]:12 6000000.6
byte mode_ctrl::ctrl#1 ctrl zp[1]:12 2.0000002E7
byte mode_ctrl::ctrl#10 ctrl zp[1]:12 8000000.8
byte mode_ctrl::ctrl#11 ctrl zp[1]:12 8000000.8
byte mode_ctrl::ctrl#12 ctrl zp[1]:12 8000000.8
byte mode_ctrl::ctrl#13 ctrl zp[1]:12 8000000.8
byte mode_ctrl::ctrl#14 ctrl zp[1]:12 5750001.25
byte mode_ctrl::ctrl#17 ctrl zp[1]:12 8000000.8
byte mode_ctrl::ctrl#2 ctrl zp[1]:12 2.0000002E7
byte mode_ctrl::ctrl#22 ctrl zp[1]:12 5000000.5
byte mode_ctrl::ctrl#3 ctrl zp[1]:12 2.0000002E7
byte mode_ctrl::ctrl#4 ctrl zp[1]:12 2.0000002E7
byte mode_ctrl::ctrl#5 ctrl zp[1]:12 2.0000002E7
byte mode_ctrl::ctrl#6 ctrl zp[1]:12 2.0000002E7
byte mode_ctrl::ctrl#0 ctrl zp[1]:25 6000000.6
byte mode_ctrl::ctrl#1 ctrl zp[1]:25 2.0000002E7
byte mode_ctrl::ctrl#10 ctrl zp[1]:25 8000000.8
byte mode_ctrl::ctrl#11 ctrl zp[1]:25 8000000.8
byte mode_ctrl::ctrl#12 ctrl zp[1]:25 8000000.8
byte mode_ctrl::ctrl#13 ctrl zp[1]:25 8000000.8
byte mode_ctrl::ctrl#14 ctrl zp[1]:25 5750001.25
byte mode_ctrl::ctrl#17 ctrl zp[1]:25 8000000.8
byte mode_ctrl::ctrl#2 ctrl zp[1]:25 2.0000002E7
byte mode_ctrl::ctrl#22 ctrl zp[1]:25 5000000.5
byte mode_ctrl::ctrl#3 ctrl zp[1]:25 2.0000002E7
byte mode_ctrl::ctrl#4 ctrl zp[1]:25 2.0000002E7
byte mode_ctrl::ctrl#5 ctrl zp[1]:25 2.0000002E7
byte mode_ctrl::ctrl#6 ctrl zp[1]:25 2.0000002E7
void mode_ecmchar()
byte~ mode_ecmchar::$2 reg byte a 2000002.0
byte~ mode_ecmchar::$3 reg byte a 2000002.0
byte~ mode_ecmchar::$4 reg byte a 2000002.0
byte~ mode_ecmchar::$5 zp[1]:11 1000001.0
byte~ mode_ecmchar::$5 zp[1]:25 1000001.0
byte~ mode_ecmchar::$6 reg byte a 2000002.0
byte~ mode_ecmchar::$7 reg byte a 2000002.0
const nomodify byte* mode_ecmchar::CHARSET = (byte*) 36864
const nomodify byte* mode_ecmchar::COLORS = (byte*) 55296
const nomodify byte* mode_ecmchar::SCREEN = (byte*) 32768
byte* mode_ecmchar::ch
byte* mode_ecmchar::ch#1 ch zp[2]:8 420000.60000000003
byte* mode_ecmchar::ch#2 ch zp[2]:8 310000.4
byte* mode_ecmchar::ch#3 ch zp[2]:8 200002.0
byte* mode_ecmchar::ch#1 ch zp[2]:13 420000.60000000003
byte* mode_ecmchar::ch#2 ch zp[2]:13 310000.4
byte* mode_ecmchar::ch#3 ch zp[2]:13 200002.0
byte* mode_ecmchar::col
byte* mode_ecmchar::col#1 col zp[2]:4 190909.36363636365
byte* mode_ecmchar::col#2 col zp[2]:4 775001.0
byte* mode_ecmchar::col#3 col zp[2]:4 200002.0
byte* mode_ecmchar::col#1 col zp[2]:15 190909.36363636365
byte* mode_ecmchar::col#2 col zp[2]:15 775001.0
byte* mode_ecmchar::col#3 col zp[2]:15 200002.0
byte mode_ecmchar::cx
byte mode_ecmchar::cx#1 reg byte x 1500001.5
byte mode_ecmchar::cx#2 reg byte x 363636.7272727273
@ -497,19 +399,19 @@ byte mode_ecmchar::i#1 reg byte x 150001.5
byte mode_ecmchar::i#2 reg byte x 200002.0
void mode_hicolecmchar()
byte~ mode_hicolecmchar::$2 reg byte a 2000002.0
byte~ mode_hicolecmchar::$3 zp[1]:13 1000001.0
byte~ mode_hicolecmchar::$3 zp[1]:24 1000001.0
byte~ mode_hicolecmchar::$4 reg byte a 2000002.0
const nomodify byte* mode_hicolecmchar::CHARSET = (byte*) 36864
const nomodify byte* mode_hicolecmchar::COLORS = (byte*) 33792
const nomodify byte* mode_hicolecmchar::SCREEN = (byte*) 32768
byte* mode_hicolecmchar::ch
byte* mode_hicolecmchar::ch#1 ch zp[2]:4 420000.60000000003
byte* mode_hicolecmchar::ch#2 ch zp[2]:4 387500.5
byte* mode_hicolecmchar::ch#3 ch zp[2]:4 200002.0
byte* mode_hicolecmchar::ch#1 ch zp[2]:15 420000.60000000003
byte* mode_hicolecmchar::ch#2 ch zp[2]:15 387500.5
byte* mode_hicolecmchar::ch#3 ch zp[2]:15 200002.0
byte* mode_hicolecmchar::col
byte* mode_hicolecmchar::col#1 col zp[2]:8 300000.4285714285
byte* mode_hicolecmchar::col#2 col zp[2]:8 516667.3333333334
byte* mode_hicolecmchar::col#3 col zp[2]:8 200002.0
byte* mode_hicolecmchar::col#1 col zp[2]:13 300000.4285714285
byte* mode_hicolecmchar::col#2 col zp[2]:13 516667.3333333334
byte* mode_hicolecmchar::col#3 col zp[2]:13 200002.0
byte mode_hicolecmchar::cx
byte mode_hicolecmchar::cx#1 reg byte x 1500001.5
byte mode_hicolecmchar::cx#2 reg byte x 333333.6666666666
@ -523,19 +425,19 @@ byte mode_hicolecmchar::v
byte mode_hicolecmchar::v#0 reg byte a 1000001.0
void mode_hicolmcchar()
byte~ mode_hicolmcchar::$2 reg byte a 2000002.0
byte~ mode_hicolmcchar::$3 zp[1]:14 1000001.0
byte~ mode_hicolmcchar::$3 zp[1]:24 1000001.0
byte~ mode_hicolmcchar::$4 reg byte a 2000002.0
const nomodify byte* mode_hicolmcchar::CHARSET = (byte*) 36864
const nomodify byte* mode_hicolmcchar::COLORS = (byte*) 33792
const nomodify byte* mode_hicolmcchar::SCREEN = (byte*) 32768
byte* mode_hicolmcchar::ch
byte* mode_hicolmcchar::ch#1 ch zp[2]:4 420000.60000000003
byte* mode_hicolmcchar::ch#2 ch zp[2]:4 387500.5
byte* mode_hicolmcchar::ch#3 ch zp[2]:4 200002.0
byte* mode_hicolmcchar::ch#1 ch zp[2]:13 420000.60000000003
byte* mode_hicolmcchar::ch#2 ch zp[2]:13 387500.5
byte* mode_hicolmcchar::ch#3 ch zp[2]:13 200002.0
byte* mode_hicolmcchar::col
byte* mode_hicolmcchar::col#1 col zp[2]:8 300000.4285714285
byte* mode_hicolmcchar::col#2 col zp[2]:8 516667.3333333334
byte* mode_hicolmcchar::col#3 col zp[2]:8 200002.0
byte* mode_hicolmcchar::col#1 col zp[2]:15 300000.4285714285
byte* mode_hicolmcchar::col#2 col zp[2]:15 516667.3333333334
byte* mode_hicolmcchar::col#3 col zp[2]:15 200002.0
byte mode_hicolmcchar::cx
byte mode_hicolmcchar::cx#1 reg byte x 1500001.5
byte mode_hicolmcchar::cx#2 reg byte x 333333.6666666666
@ -549,19 +451,19 @@ byte mode_hicolmcchar::v
byte mode_hicolmcchar::v#0 reg byte a 1000001.0
void mode_hicolstdchar()
byte~ mode_hicolstdchar::$2 reg byte a 2000002.0
byte~ mode_hicolstdchar::$3 zp[1]:13 1000001.0
byte~ mode_hicolstdchar::$3 zp[1]:23 1000001.0
byte~ mode_hicolstdchar::$4 reg byte a 2000002.0
const nomodify byte* mode_hicolstdchar::CHARSET = (byte*) 36864
const nomodify byte* mode_hicolstdchar::COLORS = (byte*) 33792
const nomodify byte* mode_hicolstdchar::SCREEN = (byte*) 32768
byte* mode_hicolstdchar::ch
byte* mode_hicolstdchar::ch#1 ch zp[2]:4 420000.60000000003
byte* mode_hicolstdchar::ch#2 ch zp[2]:4 387500.5
byte* mode_hicolstdchar::ch#3 ch zp[2]:4 200002.0
byte* mode_hicolstdchar::ch#1 ch zp[2]:13 420000.60000000003
byte* mode_hicolstdchar::ch#2 ch zp[2]:13 387500.5
byte* mode_hicolstdchar::ch#3 ch zp[2]:13 200002.0
byte* mode_hicolstdchar::col
byte* mode_hicolstdchar::col#1 col zp[2]:8 300000.4285714285
byte* mode_hicolstdchar::col#2 col zp[2]:8 516667.3333333334
byte* mode_hicolstdchar::col#3 col zp[2]:8 200002.0
byte* mode_hicolstdchar::col#1 col zp[2]:15 300000.4285714285
byte* mode_hicolstdchar::col#2 col zp[2]:15 516667.3333333334
byte* mode_hicolstdchar::col#3 col zp[2]:15 200002.0
byte mode_hicolstdchar::cx
byte mode_hicolstdchar::cx#1 reg byte x 1500001.5
byte mode_hicolstdchar::cx#2 reg byte x 333333.6666666666
@ -577,20 +479,20 @@ void mode_mcchar()
byte~ mode_mcchar::$2 reg byte a 2000002.0
byte~ mode_mcchar::$3 reg byte a 2000002.0
byte~ mode_mcchar::$4 reg byte a 2000002.0
byte~ mode_mcchar::$5 zp[1]:12 1000001.0
byte~ mode_mcchar::$5 zp[1]:28 1000001.0
byte~ mode_mcchar::$6 reg byte a 2000002.0
byte~ mode_mcchar::$7 reg byte a 2000002.0
const nomodify byte* mode_mcchar::CHARSET = (byte*) 36864
const nomodify byte* mode_mcchar::COLORS = (byte*) 55296
const nomodify byte* mode_mcchar::SCREEN = (byte*) 32768
byte* mode_mcchar::ch
byte* mode_mcchar::ch#1 ch zp[2]:4 420000.60000000003
byte* mode_mcchar::ch#2 ch zp[2]:4 310000.4
byte* mode_mcchar::ch#3 ch zp[2]:4 200002.0
byte* mode_mcchar::ch#1 ch zp[2]:15 420000.60000000003
byte* mode_mcchar::ch#2 ch zp[2]:15 310000.4
byte* mode_mcchar::ch#3 ch zp[2]:15 200002.0
byte* mode_mcchar::col
byte* mode_mcchar::col#1 col zp[2]:8 190909.36363636365
byte* mode_mcchar::col#2 col zp[2]:8 775001.0
byte* mode_mcchar::col#3 col zp[2]:8 200002.0
byte* mode_mcchar::col#1 col zp[2]:13 190909.36363636365
byte* mode_mcchar::col#2 col zp[2]:13 775001.0
byte* mode_mcchar::col#3 col zp[2]:13 200002.0
byte mode_mcchar::cx
byte mode_mcchar::cx#1 reg byte x 1500001.5
byte mode_mcchar::cx#2 reg byte x 363636.7272727273
@ -617,12 +519,12 @@ byte mode_sixsfred::bx
byte mode_sixsfred::bx#1 reg byte x 1500001.5
byte mode_sixsfred::bx#2 reg byte x 666667.3333333334
byte mode_sixsfred::by
byte mode_sixsfred::by#1 by zp[1]:10 150001.5
byte mode_sixsfred::by#4 by zp[1]:10 33333.666666666664
byte mode_sixsfred::by#1 by zp[1]:8 150001.5
byte mode_sixsfred::by#4 by zp[1]:8 33333.666666666664
byte* mode_sixsfred::col
byte* mode_sixsfred::col#1 col zp[2]:19 420000.60000000003
byte* mode_sixsfred::col#2 col zp[2]:19 775001.0
byte* mode_sixsfred::col#3 col zp[2]:19 200002.0
byte* mode_sixsfred::col#1 col zp[2]:13 420000.60000000003
byte* mode_sixsfred::col#2 col zp[2]:13 775001.0
byte* mode_sixsfred::col#3 col zp[2]:13 200002.0
byte mode_sixsfred::cx
byte mode_sixsfred::cx#1 reg byte x 1500001.5
byte mode_sixsfred::cx#2 reg byte x 600000.6000000001
@ -630,13 +532,13 @@ byte mode_sixsfred::cy
byte mode_sixsfred::cy#1 cy zp[1]:6 150001.5
byte mode_sixsfred::cy#4 cy zp[1]:6 150000.375
byte* mode_sixsfred::gfxa
byte* mode_sixsfred::gfxa#1 gfxa zp[2]:8 420000.60000000003
byte* mode_sixsfred::gfxa#2 gfxa zp[2]:8 775001.0
byte* mode_sixsfred::gfxa#3 gfxa zp[2]:8 200002.0
byte* mode_sixsfred::gfxa#1 gfxa zp[2]:9 420000.60000000003
byte* mode_sixsfred::gfxa#2 gfxa zp[2]:9 775001.0
byte* mode_sixsfred::gfxa#3 gfxa zp[2]:9 200002.0
byte* mode_sixsfred::gfxb
byte* mode_sixsfred::gfxb#1 gfxb zp[2]:17 420000.60000000003
byte* mode_sixsfred::gfxb#2 gfxb zp[2]:17 1550002.0
byte* mode_sixsfred::gfxb#3 gfxb zp[2]:17 200002.0
byte* mode_sixsfred::gfxb#1 gfxb zp[2]:15 420000.60000000003
byte* mode_sixsfred::gfxb#2 gfxb zp[2]:15 1550002.0
byte* mode_sixsfred::gfxb#3 gfxb zp[2]:15 200002.0
byte mode_sixsfred::i
byte mode_sixsfred::i#1 reg byte x 150001.5
byte mode_sixsfred::i#2 reg byte x 200002.0
@ -645,7 +547,7 @@ byte mode_sixsfred::row#0 reg byte a 2000002.0
const byte* mode_sixsfred::row_bitmask[] = { 0, $55, $aa, $ff }
void mode_sixsfred2()
byte~ mode_sixsfred2::$2 reg byte a 2000002.0
byte~ mode_sixsfred2::$3 zp[1]:14 1000001.0
byte~ mode_sixsfred2::$3 zp[1]:25 1000001.0
byte~ mode_sixsfred2::$4 reg byte a 2000002.0
byte~ mode_sixsfred2::$5 reg byte a 2000002.0
byte~ mode_sixsfred2::$8 reg byte a 2000002.0
@ -662,12 +564,12 @@ byte mode_sixsfred2::bx
byte mode_sixsfred2::bx#1 reg byte x 1500001.5
byte mode_sixsfred2::bx#2 reg byte x 666667.3333333334
byte mode_sixsfred2::by
byte mode_sixsfred2::by#1 by zp[1]:10 150001.5
byte mode_sixsfred2::by#4 by zp[1]:10 33333.666666666664
byte mode_sixsfred2::by#1 by zp[1]:8 150001.5
byte mode_sixsfred2::by#4 by zp[1]:8 33333.666666666664
byte* mode_sixsfred2::col
byte* mode_sixsfred2::col#1 col zp[2]:8 420000.60000000003
byte* mode_sixsfred2::col#2 col zp[2]:8 516667.3333333334
byte* mode_sixsfred2::col#3 col zp[2]:8 200002.0
byte* mode_sixsfred2::col#1 col zp[2]:13 420000.60000000003
byte* mode_sixsfred2::col#2 col zp[2]:13 516667.3333333334
byte* mode_sixsfred2::col#3 col zp[2]:13 200002.0
byte mode_sixsfred2::cx
byte mode_sixsfred2::cx#1 reg byte x 1500001.5
byte mode_sixsfred2::cx#2 reg byte x 428571.85714285716
@ -675,13 +577,13 @@ byte mode_sixsfred2::cy
byte mode_sixsfred2::cy#1 cy zp[1]:6 150001.5
byte mode_sixsfred2::cy#4 cy zp[1]:6 120000.30000000002
byte* mode_sixsfred2::gfxa
byte* mode_sixsfred2::gfxa#1 gfxa zp[2]:4 420000.60000000003
byte* mode_sixsfred2::gfxa#2 gfxa zp[2]:4 775001.0
byte* mode_sixsfred2::gfxa#3 gfxa zp[2]:4 200002.0
byte* mode_sixsfred2::gfxa#1 gfxa zp[2]:15 420000.60000000003
byte* mode_sixsfred2::gfxa#2 gfxa zp[2]:15 775001.0
byte* mode_sixsfred2::gfxa#3 gfxa zp[2]:15 200002.0
byte* mode_sixsfred2::gfxb
byte* mode_sixsfred2::gfxb#1 gfxb zp[2]:17 420000.60000000003
byte* mode_sixsfred2::gfxb#2 gfxb zp[2]:17 1550002.0
byte* mode_sixsfred2::gfxb#3 gfxb zp[2]:17 200002.0
byte* mode_sixsfred2::gfxb#1 gfxb zp[2]:9 420000.60000000003
byte* mode_sixsfred2::gfxb#2 gfxb zp[2]:9 1550002.0
byte* mode_sixsfred2::gfxb#3 gfxb zp[2]:9 200002.0
byte mode_sixsfred2::i
byte mode_sixsfred2::i#1 reg byte x 150001.5
byte mode_sixsfred2::i#2 reg byte x 200002.0
@ -701,7 +603,7 @@ byte* mode_stdbitmap::ch#3 ch zp[2]:4 200002.0
byte mode_stdbitmap::col
byte mode_stdbitmap::col#0 reg byte y 1500001.5
byte mode_stdbitmap::col2
byte mode_stdbitmap::col2#0 col2 zp[1]:12 1000001.0
byte mode_stdbitmap::col2#0 col2 zp[1]:23 1000001.0
byte mode_stdbitmap::cx
byte mode_stdbitmap::cx#1 reg byte x 1500001.5
byte mode_stdbitmap::cx#2 reg byte x 375000.375
@ -721,20 +623,20 @@ void mode_stdchar()
byte~ mode_stdchar::$2 reg byte a 2000002.0
byte~ mode_stdchar::$3 reg byte a 2000002.0
byte~ mode_stdchar::$4 reg byte a 2000002.0
byte~ mode_stdchar::$5 zp[1]:15 1000001.0
byte~ mode_stdchar::$5 zp[1]:24 1000001.0
byte~ mode_stdchar::$6 reg byte a 2000002.0
byte~ mode_stdchar::$7 reg byte a 2000002.0
const nomodify byte* mode_stdchar::CHARSET = (byte*) 36864
const nomodify byte* mode_stdchar::COLORS = (byte*) 55296
const nomodify byte* mode_stdchar::SCREEN = (byte*) 32768
byte* mode_stdchar::ch
byte* mode_stdchar::ch#1 ch zp[2]:4 420000.60000000003
byte* mode_stdchar::ch#2 ch zp[2]:4 310000.4
byte* mode_stdchar::ch#3 ch zp[2]:4 200002.0
byte* mode_stdchar::ch#1 ch zp[2]:15 420000.60000000003
byte* mode_stdchar::ch#2 ch zp[2]:15 310000.4
byte* mode_stdchar::ch#3 ch zp[2]:15 200002.0
byte* mode_stdchar::col
byte* mode_stdchar::col#1 col zp[2]:8 190909.36363636365
byte* mode_stdchar::col#2 col zp[2]:8 775001.0
byte* mode_stdchar::col#3 col zp[2]:8 200002.0
byte* mode_stdchar::col#1 col zp[2]:13 190909.36363636365
byte* mode_stdchar::col#2 col zp[2]:13 775001.0
byte* mode_stdchar::col#3 col zp[2]:13 200002.0
byte mode_stdchar::cx
byte mode_stdchar::cx#1 reg byte x 1500001.5
byte mode_stdchar::cx#2 reg byte x 363636.7272727273
@ -746,7 +648,7 @@ byte mode_stdchar::i#1 reg byte x 150001.5
byte mode_stdchar::i#2 reg byte x 200002.0
void mode_twoplanebitmap()
byte~ mode_twoplanebitmap::$2 reg byte a 2000002.0
byte~ mode_twoplanebitmap::$3 zp[1]:15 1000001.0
byte~ mode_twoplanebitmap::$3 zp[1]:25 1000001.0
byte~ mode_twoplanebitmap::$4 reg byte a 2000002.0
byte~ mode_twoplanebitmap::$5 reg byte a 2000002.0
byte~ mode_twoplanebitmap::$8 reg byte a 2000002.0
@ -763,12 +665,12 @@ byte mode_twoplanebitmap::bx
byte mode_twoplanebitmap::bx#1 reg byte x 1500001.5
byte mode_twoplanebitmap::bx#2 reg byte x 666667.3333333334
byte mode_twoplanebitmap::by
byte mode_twoplanebitmap::by#1 by zp[1]:10 150001.5
byte mode_twoplanebitmap::by#4 by zp[1]:10 33333.666666666664
byte mode_twoplanebitmap::by#1 by zp[1]:8 150001.5
byte mode_twoplanebitmap::by#4 by zp[1]:8 33333.666666666664
byte* mode_twoplanebitmap::col
byte* mode_twoplanebitmap::col#1 col zp[2]:17 420000.60000000003
byte* mode_twoplanebitmap::col#2 col zp[2]:17 516667.3333333334
byte* mode_twoplanebitmap::col#3 col zp[2]:17 200002.0
byte* mode_twoplanebitmap::col#1 col zp[2]:15 420000.60000000003
byte* mode_twoplanebitmap::col#2 col zp[2]:15 516667.3333333334
byte* mode_twoplanebitmap::col#3 col zp[2]:15 200002.0
byte mode_twoplanebitmap::cx
byte mode_twoplanebitmap::cx#1 reg byte x 1500001.5
byte mode_twoplanebitmap::cx#2 reg byte x 428571.85714285716
@ -776,15 +678,15 @@ byte mode_twoplanebitmap::cy
byte mode_twoplanebitmap::cy#1 cy zp[1]:6 150001.5
byte mode_twoplanebitmap::cy#4 cy zp[1]:6 120000.30000000002
byte* mode_twoplanebitmap::gfxa
byte* mode_twoplanebitmap::gfxa#1 gfxa zp[2]:19 2000002.0
byte* mode_twoplanebitmap::gfxa#2 gfxa zp[2]:19 2000002.0
byte* mode_twoplanebitmap::gfxa#3 gfxa zp[2]:19 1020001.2
byte* mode_twoplanebitmap::gfxa#6 gfxa zp[2]:19 620000.8
byte* mode_twoplanebitmap::gfxa#7 gfxa zp[2]:19 200002.0
byte* mode_twoplanebitmap::gfxa#1 gfxa zp[2]:9 2000002.0
byte* mode_twoplanebitmap::gfxa#2 gfxa zp[2]:9 2000002.0
byte* mode_twoplanebitmap::gfxa#3 gfxa zp[2]:9 1020001.2
byte* mode_twoplanebitmap::gfxa#6 gfxa zp[2]:9 620000.8
byte* mode_twoplanebitmap::gfxa#7 gfxa zp[2]:9 200002.0
byte* mode_twoplanebitmap::gfxb
byte* mode_twoplanebitmap::gfxb#1 gfxb zp[2]:8 420000.60000000003
byte* mode_twoplanebitmap::gfxb#2 gfxb zp[2]:8 1550002.0
byte* mode_twoplanebitmap::gfxb#3 gfxb zp[2]:8 200002.0
byte* mode_twoplanebitmap::gfxb#1 gfxb zp[2]:13 420000.60000000003
byte* mode_twoplanebitmap::gfxb#2 gfxb zp[2]:13 1550002.0
byte* mode_twoplanebitmap::gfxb#3 gfxb zp[2]:13 200002.0
byte mode_twoplanebitmap::i
byte mode_twoplanebitmap::i#1 reg byte x 150001.5
byte mode_twoplanebitmap::i#2 reg byte x 200002.0
@ -799,18 +701,29 @@ byte* print_char_cursor#37 print_char_cursor zp[2]:2 3683334.1666666665
byte* print_char_cursor#38 print_char_cursor zp[2]:2 1.4328571485714287E8
void print_cls()
byte* print_line_cursor
byte* print_line_cursor#1 print_line_cursor zp[2]:17 91666.83333333334
byte* print_line_cursor#19 print_line_cursor zp[2]:17 2.001000003E9
byte* print_line_cursor#2 print_line_cursor zp[2]:17 6.00040001E8
byte* print_line_cursor#1 print_line_cursor zp[2]:9 91666.83333333334
byte* print_line_cursor#19 print_line_cursor zp[2]:9 2.001000003E9
byte* print_line_cursor#2 print_line_cursor zp[2]:9 6.00040001E8
void print_ln()
byte* print_screen
void print_str_lines(byte* print_str_lines::str)
byte print_str_lines::ch
byte print_str_lines::ch#0 reg byte a 666667.3333333334
byte* print_str_lines::str
byte* print_str_lines::str#0 str zp[2]:8 233333.66666666666
byte* print_str_lines::str#2 str zp[2]:8 150001.5
byte* print_str_lines::str#3 str zp[2]:8 1550002.0
byte* print_str_lines::str#0 str zp[2]:13 233333.66666666666
byte* print_str_lines::str#2 str zp[2]:13 150001.5
byte* print_str_lines::str#3 str zp[2]:13 1550002.0
word sgn_u16(word sgn_u16::w)
byte~ sgn_u16::$0 reg byte a 2.0000002E7
byte~ sgn_u16::$1 reg byte a 2.0000002E7
word sgn_u16::return
word sgn_u16::return#0 return zp[2]:17 2000002.0
word sgn_u16::return#1 return zp[2]:17 2000002.0
word sgn_u16::return#4 return zp[2]:17 500000.5
word sgn_u16::w
word sgn_u16::w#0 w zp[2]:33 2000002.0
word sgn_u16::w#1 w zp[2]:33 2000002.0
word sgn_u16::w#2 w zp[2]:33 1.2000003E7
reg byte x [ menu::i#2 menu::i#1 ]
zp[2]:2 [ print_char_cursor#37 print_char_cursor#2 print_char_cursor#103 print_char_cursor#38 print_char_cursor#26 menu::c#2 menu::c#1 ]
@ -823,6 +736,7 @@ reg byte x [ mode_mcchar::i#2 mode_mcchar::i#1 ]
reg byte x [ mode_mcchar::cx#2 mode_mcchar::cx#1 ]
reg byte x [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ]
reg byte x [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ]
zp[2]:4 [ mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_gfx#14 bitmap_gfx#15 ]
reg byte x [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ]
reg byte x [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ]
reg byte x [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ]
@ -831,7 +745,6 @@ reg byte x [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ]
reg byte x [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ]
reg byte x [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ]
reg byte x [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ]
zp[2]:4 [ mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ]
reg byte x [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ]
reg byte x [ mode_sixsfred2::bx#2 mode_sixsfred2::bx#1 ]
reg byte x [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ]
@ -846,22 +759,23 @@ reg byte x [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ]
zp[1]:6 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 ]
reg byte x [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ]
zp[1]:7 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 ]
zp[1]:8 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 ]
reg byte x [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ]
reg byte a [ mode_8bpppixelcell::c#2 mode_8bpppixelcell::c#3 ]
reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ]
reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ]
zp[2]:8 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ]
reg byte x [ memset::c#5 ]
reg byte x [ dtv_control#116 dtv_control#146 dtv_control#16 ]
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
zp[2]:9 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 print_line_cursor#19 print_line_cursor#1 print_line_cursor#2 memset::str#4 memset::dst#2 memset::dst#4 memset::dst#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ]
zp[2]:11 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_screen#14 bitmap_screen#15 ]
zp[2]:13 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ]
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
zp[1]:10 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 ]
reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
reg byte y [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ]
zp[2]:15 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 memset::num#3 memset::end#0 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ]
zp[2]:17 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
reg byte a [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ]
reg byte a [ keyboard_key_pressed::return#2 ]
reg byte a [ menu::$5 ]
reg byte a [ keyboard_key_pressed::return#24 ]
@ -901,7 +815,6 @@ reg byte a [ mode_stdchar::$7 ]
reg byte a [ mode_ecmchar::$2 ]
reg byte a [ mode_ecmchar::$3 ]
reg byte a [ mode_ecmchar::$4 ]
zp[1]:11 [ mode_ecmchar::$5 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
reg byte a [ mode_ecmchar::$6 ]
reg byte a [ mode_ecmchar::$7 ]
reg byte a [ mode_mcchar::$2 ]
@ -911,27 +824,28 @@ reg byte a [ mode_mcchar::$6 ]
reg byte a [ mode_mcchar::$7 ]
reg byte a [ mode_stdbitmap::$4 ]
reg byte y [ mode_stdbitmap::col#0 ]
zp[1]:12 [ mode_stdbitmap::col2#0 mode_mcchar::$5 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ]
reg byte a [ mode_stdbitmap::$7 ]
reg byte a [ mode_stdbitmap::$8 ]
reg byte x [ bitmap_line::y0#0 ]
zp[2]:19 [ bitmap_line::x2#0 ]
zp[2]:21 [ bitmap_line::y2#0 ]
reg byte a [ mode_hicolstdchar::$2 ]
zp[1]:23 [ mode_hicolstdchar::$3 mode_stdbitmap::col2#0 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ]
reg byte a [ mode_hicolstdchar::$4 ]
reg byte a [ mode_hicolstdchar::v#0 ]
reg byte a [ mode_hicolecmchar::$2 ]
zp[1]:13 [ mode_hicolecmchar::$3 mode_hicolstdchar::$3 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ]
reg byte a [ mode_hicolecmchar::$4 ]
reg byte a [ mode_hicolecmchar::v#0 ]
reg byte a [ mode_hicolmcchar::$2 ]
zp[1]:24 [ mode_hicolmcchar::$3 mode_hicolecmchar::$3 mode_stdchar::$5 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ]
reg byte a [ mode_hicolmcchar::$4 ]
reg byte a [ mode_hicolmcchar::v#0 ]
reg byte a [ mode_sixsfred2::$2 ]
zp[1]:14 [ mode_sixsfred2::$3 mode_hicolmcchar::$3 keyboard_key_pressed::colidx#0 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
reg byte a [ mode_sixsfred2::$4 ]
reg byte a [ mode_sixsfred2::$5 ]
reg byte a [ mode_sixsfred2::$8 ]
reg byte a [ mode_sixsfred2::row#0 ]
reg byte a [ mode_twoplanebitmap::$2 ]
zp[1]:25 [ mode_twoplanebitmap::$3 mode_sixsfred2::$3 mode_ecmchar::$5 mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ]
reg byte a [ mode_twoplanebitmap::$4 ]
reg byte a [ mode_twoplanebitmap::$5 ]
reg byte a [ mode_twoplanebitmap::$8 ]
@ -940,10 +854,10 @@ reg byte a [ mode_sixsfred::$3 ]
reg byte a [ mode_sixsfred::$6 ]
reg byte a [ mode_sixsfred::row#0 ]
reg byte a [ mode_8bpppixelcell::$2 ]
zp[1]:15 [ mode_8bpppixelcell::$3 mode_twoplanebitmap::$3 mode_stdchar::$5 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x0#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ]
reg byte a [ mode_8bpppixelcell::$4 ]
reg byte a [ mode_8bpppixelcell::$5 ]
reg byte a [ mode_8bpppixelcell::$8 ]
zp[2]:26 [ mode_8bppchunkybmm::$7 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
reg byte a [ mode_8bppchunkybmm::c#0 ]
reg byte a [ keyboard_matrix_read::return#0 ]
reg byte a [ keyboard_key_pressed::return#14 ]
@ -962,19 +876,16 @@ reg byte a [ keyboard_key_pressed::return#20 ]
reg byte a [ mode_ctrl::$24 ]
reg byte a [ keyboard_key_pressed::return#21 ]
reg byte a [ mode_ctrl::$28 ]
reg byte a [ bitmap_init::$0 ]
zp[1]:16 [ bitmap_init::$10 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ]
reg byte a [ bitmap_init::$7 ]
reg byte a [ bitmap_init::$8 ]
reg byte a [ bitmap_init::$9 ]
reg byte y [ bitmap_line::yd#2 ]
reg byte y [ bitmap_line::yd#1 ]
reg byte y [ bitmap_line::yd#10 ]
reg byte y [ bitmap_line::yd#11 ]
reg byte x [ bitmap_line_ydxi::$6 ]
reg byte a [ bitmap_line_xdyi::$6 ]
reg byte x [ bitmap_line_ydxd::$6 ]
reg byte a [ bitmap_line_xdyd::$6 ]
zp[2]:17 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 mode_8bppchunkybmm::$7 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 print_line_cursor#19 print_line_cursor#1 print_line_cursor#2 memset::dst#2 memset::dst#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ]
zp[2]:19 [ bitmap_plot::plotter_y#0 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 ]
reg byte a [ bitmap_plot::$1 ]
zp[1]:28 [ bitmap_init::$7 mode_8bpppixelcell::$3 mode_mcchar::$5 keyboard_key_pressed::colidx#0 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]
zp[2]:29 [ bitmap_line::dx#0 ]
zp[2]:31 [ bitmap_line::sx#0 ]
reg byte a [ abs_u16::$0 ]
reg byte a [ abs_u16::$1 ]
reg byte a [ sgn_u16::$0 ]
reg byte a [ sgn_u16::$1 ]
zp[2]:33 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
zp[2]:35 [ bitmap_plot::$0 ]
reg byte x [ bitmap_plot::$1 ]

View File

@ -12,9 +12,10 @@
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const WHITE = 1
.const LINES = 8
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
.const lines_cnt = 8
.label D011 = $d011
.label VICII_MEMORY = $d018
// The VIC-II MOS 6567/6569
@ -34,9 +35,9 @@ main: {
// *VICII_MEMORY = (char)((((unsigned int)SCREEN&$3fff)/$40)|(((unsigned int)BITMAP&$3fff)/$400))
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VICII_MEMORY
// bitmap_init(BITMAP)
// bitmap_init(BITMAP, SCREEN)
jsr bitmap_init
// bitmap_clear()
// bitmap_clear(BLACK, WHITE)
jsr bitmap_clear
// init_screen()
jsr init_screen
@ -45,49 +46,39 @@ main: {
jsr lines
jmp __b1
}
// Initialize the bitmap plotter tables for a specific bitmap
// Initialize bitmap plotting tables
bitmap_init: {
.label __10 = 9
.label yoffs = $b
ldy #$80
.label __7 = $e
.label yoffs = 2
ldx #0
lda #$80
__b1:
// x&$f8
txa
and #$f8
// bitmap_plot_xlo[x] = x&$f8
sta bitmap_plot_xlo,x
// bitmap_plot_xhi[x] = >bitmap
lda #>BITMAP
sta bitmap_plot_xhi,x
// bitmap_plot_bit[x] = bits
tya
sta bitmap_plot_bit,x
// bits = bits>>1
tya
// bits >>= 1
lsr
tay
// if(bits==0)
cpy #0
cmp #0
bne __b2
ldy #$80
lda #$80
__b2:
// for(char x : 0..255)
inx
cpx #0
bne __b1
lda #<0
lda #<BITMAP
sta.z yoffs
lda #>BITMAP
sta.z yoffs+1
tax
ldx #0
__b3:
// y&$7
lda #7
sax.z __10
sax.z __7
// <yoffs
lda.z yoffs
// y&$7 | <yoffs
ora.z __10
ora.z __7
// bitmap_plot_ylo[y] = y&$7 | <yoffs
sta bitmap_plot_ylo,x
// >yoffs
@ -96,7 +87,7 @@ bitmap_init: {
sta bitmap_plot_yhi,x
// if((y&$7)==7)
lda #7
cmp.z __10
cmp.z __7
bne __b4
// yoffs = yoffs + 40*8
clc
@ -115,42 +106,37 @@ bitmap_init: {
rts
}
// Clear all graphics on the bitmap
// bgcol - the background color to fill the screen with
// fgcol - the foreground color to fill the screen with
bitmap_clear: {
.label bitmap = $b
.label y = 2
// bitmap = (char*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] }
lda bitmap_plot_xlo
sta.z bitmap
lda bitmap_plot_xhi
sta.z bitmap+1
lda #0
sta.z y
__b1:
.const col = WHITE*$10
// memset(bitmap_screen, col, 1000uw)
ldx #col
lda #<SCREEN
sta.z memset.str
lda #>SCREEN
sta.z memset.str+1
lda #<$3e8
sta.z memset.num
lda #>$3e8
sta.z memset.num+1
jsr memset
// memset(bitmap_gfx, 0, 8000uw)
ldx #0
__b2:
// *bitmap++ = 0
lda #0
tay
sta (bitmap),y
// *bitmap++ = 0;
inc.z bitmap
bne !+
inc.z bitmap+1
!:
// for( char x: 0..199 )
inx
cpx #$c8
bne __b2
// for( char y: 0..39 )
inc.z y
lda #$28
cmp.z y
bne __b1
lda #<BITMAP
sta.z memset.str
lda #>BITMAP
sta.z memset.str+1
lda #<$1f40
sta.z memset.num
lda #>$1f40
sta.z memset.num+1
jsr memset
// }
rts
}
init_screen: {
.label c = $b
.label c = 2
lda #<SCREEN
sta.z c
lda #>SCREEN
@ -178,365 +164,391 @@ init_screen: {
jmp __b1
}
lines: {
.label l = 2
.label l = $e
lda #0
sta.z l
__b1:
// for(char l=0; l<lines_cnt;l++)
// for(char l=0; l<LINES;l++)
lda.z l
cmp #lines_cnt
cmp #LINES
bcc __b2
// }
rts
__b2:
// bitmap_line(lines_x[l], lines_x[l+1], lines_y[l], lines_y[l+1])
// bitmap_line(lines_x[l], lines_y[l], lines_x[l+1], lines_y[l+1])
ldy.z l
lda lines_x,y
sta.z bitmap_line.x0
lda lines_x+1,y
sta.z bitmap_line.x1
lda #0
sta.z bitmap_line.x1+1
lda lines_y,y
sta.z bitmap_line.y0
ldx.z l
ldy lines_y+1,x
sta.z bitmap_line.y1
lda #0
sta.z bitmap_line.y1+1
lda lines_x+1,y
sta.z bitmap_line.x2
lda #0
sta.z bitmap_line.x2+1
lda lines_y+1,y
sta.z bitmap_line.y2
lda #0
sta.z bitmap_line.y2+1
jsr bitmap_line
// for(char l=0; l<lines_cnt;l++)
// for(char l=0; l<LINES;l++)
inc.z l
jmp __b1
}
// Draw a line on the bitmap
// bitmap_line(byte zp(5) x0, byte zp(7) x1, byte zp(4) y0, byte register(Y) y1)
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zp(4) str, byte register(X) c, word zp(2) num)
memset: {
.label end = 2
.label dst = 4
.label num = 2
.label str = 4
// if(num>0)
lda.z num
bne !+
lda.z num+1
beq __breturn
!:
// end = (char*)str + num
lda.z end
clc
adc.z str
sta.z end
lda.z end+1
adc.z str+1
sta.z end+1
__b2:
// for(char* dst = str; dst!=end; dst++)
lda.z dst+1
cmp.z end+1
bne __b3
lda.z dst
cmp.z end
bne __b3
__breturn:
// }
rts
__b3:
// *dst = c
txa
ldy #0
sta (dst),y
// for(char* dst = str; dst!=end; dst++)
inc.z dst
bne !+
inc.z dst+1
!:
jmp __b2
}
// Draw a line on the bitmap using bresenhams algorithm
// bitmap_line(word zp(4) x1, word zp(6) y1, word zp($f) x2, word zp($11) y2)
bitmap_line: {
.label xd = 9
.label yd = 6
.label yd_1 = 3
.label x0 = 5
.label x1 = 7
.label y0 = 4
// if(x0<x1)
lda.z x0
cmp.z x1
bcc __b1
// xd = x0-x1
.label dx = $13
.label dy = $a
.label sx = $15
.label sy = $c
.label e1 = 8
.label e = 2
.label y = 6
.label x = 4
.label x1 = 4
.label y1 = 6
.label x2 = $f
.label y2 = $11
// abs_u16(x2-x1)
lda.z x2
sec
sbc.z x1
sta.z xd
// if(y0<y1)
cpy.z y0
beq !+
bcs __b7
!:
// yd = y0-y1
tya
eor #$ff
sta.z abs_u16.w
lda.z x2+1
sbc.z x1+1
sta.z abs_u16.w+1
jsr abs_u16
// abs_u16(x2-x1)
// dx = abs_u16(x2-x1)
lda.z abs_u16.return
sta.z dx
lda.z abs_u16.return+1
sta.z dx+1
// abs_u16(y2-y1)
lda.z y2
sec
adc.z y0
sta.z yd_1
// if(yd<xd)
cmp.z xd
bcc __b8
// bitmap_line_ydxi(y1, x1, y0, yd, xd)
sty.z bitmap_line_ydxi.y
ldx.z x1
jsr bitmap_line_ydxi
// }
rts
__b8:
// bitmap_line_xdyi(x1, y1, x0, xd, yd)
ldx.z x1
sty.z bitmap_line_xdyi.y
jsr bitmap_line_xdyi
rts
sbc.z y1
sta.z abs_u16.w
lda.z y2+1
sbc.z y1+1
sta.z abs_u16.w+1
jsr abs_u16
// abs_u16(y2-y1)
// dy = abs_u16(y2-y1)
// if(dx==0 && dy==0)
lda.z dx
ora.z dx+1
bne __b1
lda.z dy
ora.z dy+1
bne !__b4+
jmp __b4
!__b4:
__b1:
// sgn_u16(x2-x1)
lda.z x2
sec
sbc.z x1
sta.z sgn_u16.w
lda.z x2+1
sbc.z x1+1
sta.z sgn_u16.w+1
jsr sgn_u16
// sgn_u16(x2-x1)
// sx = sgn_u16(x2-x1)
lda.z sgn_u16.return
sta.z sx
lda.z sgn_u16.return+1
sta.z sx+1
// sgn_u16(y2-y1)
lda.z y2
sec
sbc.z y1
sta.z sgn_u16.w
lda.z y2+1
sbc.z y1+1
sta.z sgn_u16.w+1
jsr sgn_u16
// sgn_u16(y2-y1)
// sy = sgn_u16(y2-y1)
// if(dx > dy)
lda.z dy+1
cmp.z dx+1
bcc __b2
bne !+
lda.z dy
cmp.z dx
bcc __b2
!:
// e = dx/2
lda.z dx+1
lsr
sta.z e+1
lda.z dx
ror
sta.z e
__b6:
// bitmap_plot(x,(char)y)
lda.z y
jsr bitmap_plot
// y += sy
lda.z y
clc
adc.z sy
sta.z y
lda.z y+1
adc.z sy+1
sta.z y+1
// e += dx
lda.z e
clc
adc.z dx
sta.z e
lda.z e+1
adc.z dx+1
sta.z e+1
// if(dy<e)
cmp.z dy+1
bne !+
lda.z e
cmp.z dy
beq __b7
!:
bcc __b7
// x += sx
lda.z x
clc
adc.z sx
sta.z x
lda.z x+1
adc.z sx+1
sta.z x+1
// e -= dy
lda.z e
sec
sbc.z dy
sta.z e
lda.z e+1
sbc.z dy+1
sta.z e+1
__b7:
// yd = y1-y0
tya
sec
sbc.z y0
sta.z yd
// if(yd<xd)
cmp.z xd
bcc __b9
// bitmap_line_ydxd(y0, x0, y1, yd, xd)
lda.z y0
sta.z bitmap_line_ydxd.y
ldx.z x0
sty.z bitmap_line_ydxd.y1
jsr bitmap_line_ydxd
// while (y != y2)
lda.z y+1
cmp.z y2+1
bne __b6
lda.z y
cmp.z y2
bne __b6
__b3:
// bitmap_plot(x,(char)y)
lda.z y
jsr bitmap_plot
// }
rts
__b2:
// e = dy/2
lda.z dy+1
lsr
sta.z e1+1
lda.z dy
ror
sta.z e1
__b9:
// bitmap_line_xdyd(x1, y1, x0, xd, yd)
ldx.z x1
sty.z bitmap_line_xdyd.y
lda.z x0
sta.z bitmap_line_xdyd.x1
jsr bitmap_line_xdyd
rts
__b1:
// xd = x1-x0
lda.z x1
sec
sbc.z x0
sta.z xd
// if(y0<y1)
cpy.z y0
beq !+
bcs __b11
// bitmap_plot(x,(char)y)
lda.z y
jsr bitmap_plot
// x += sx
lda.z x
clc
adc.z sx
sta.z x
lda.z x+1
adc.z sx+1
sta.z x+1
// e += dy
lda.z e1
clc
adc.z dy
sta.z e1
lda.z e1+1
adc.z dy+1
sta.z e1+1
// if(dx < e)
cmp.z dx+1
bne !+
lda.z e1
cmp.z dx
beq __b10
!:
// yd = y0-y1
tya
eor #$ff
bcc __b10
// y += sy
lda.z y
clc
adc.z sy
sta.z y
lda.z y+1
adc.z sy+1
sta.z y+1
// e -= dx
lda.z e1
sec
adc.z y0
sta.z yd
// if(yd<xd)
cmp.z xd
bcc __b12
// bitmap_line_ydxd(y1, x1, y0, yd, xd)
sty.z bitmap_line_ydxd.y
ldx.z x1
jsr bitmap_line_ydxd
rts
__b12:
// bitmap_line_xdyd(x0, y0, x1, xd, yd)
ldx.z x0
jsr bitmap_line_xdyd
rts
__b11:
// yd = y1-y0
tya
sec
sbc.z y0
sta.z yd_1
// if(yd<xd)
cmp.z xd
bcc __b13
// bitmap_line_ydxi(y0, x0, y1, yd, xd)
lda.z y0
sta.z bitmap_line_ydxi.y
ldx.z x0
sty.z bitmap_line_ydxi.y1
jsr bitmap_line_ydxi
rts
__b13:
// bitmap_line_xdyi(x0, y0, x1, xd, yd)
ldx.z x0
lda.z x1
sta.z bitmap_line_xdyi.x1
jsr bitmap_line_xdyi
sbc.z dx
sta.z e1
lda.z e1+1
sbc.z dx+1
sta.z e1+1
__b10:
// while (x != x2)
lda.z x+1
cmp.z x2+1
bne __b9
lda.z x
cmp.z x2
bne __b9
jmp __b3
__b4:
// bitmap_plot(x,(char)y)
lda.z y1
jsr bitmap_plot
rts
}
// bitmap_line_ydxi(byte zp(6) y, byte register(X) x, byte zp(4) y1, byte zp(3) yd, byte zp(9) xd)
bitmap_line_ydxi: {
.label y = 6
.label y1 = 4
.label yd = 3
.label xd = 9
.label e = 5
// e = xd>>1
lda.z xd
lsr
sta.z e
__b1:
// bitmap_plot(x,y)
ldy.z y
jsr bitmap_plot
// y++;
inc.z y
// e = e+xd
lda.z e
clc
adc.z xd
sta.z e
// if(yd<e)
lda.z yd
cmp.z e
bcs __b2
// x++;
inx
// e = e - yd
lda.z e
sec
sbc.z yd
sta.z e
__b2:
// y1+1
ldy.z y1
iny
// while (y!=(y1+1))
cpy.z y
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
// abs_u16(word zp($a) w)
abs_u16: {
.label w = $a
.label return = $a
// >w
lda.z w+1
// >w&0x80
and #$80
// if(>w&0x80)
cmp #0
bne __b1
rts
__b1:
// return -w;
sec
lda #0
sbc.z return
sta.z return
lda #0
sbc.z return+1
sta.z return+1
// }
rts
}
// bitmap_line_xdyi(byte register(X) x, byte zp(4) y, byte zp(5) x1, byte zp(9) xd, byte zp(3) yd)
bitmap_line_xdyi: {
.label __6 = $a
.label y = 4
.label x1 = 5
.label xd = 9
.label yd = 3
.label e = 6
// e = yd>>1
lda.z yd
lsr
sta.z e
__b1:
// bitmap_plot(x,y)
ldy.z y
jsr bitmap_plot
// x++;
inx
// e = e+yd
lda.z e
clc
adc.z yd
sta.z e
// if(xd<e)
lda.z xd
cmp.z e
bcs __b2
// y++;
inc.z y
// e = e - xd
lda.z e
sec
sbc.z xd
sta.z e
__b2:
// x1+1
ldy.z x1
iny
sty.z __6
// while (x!=(x1+1))
cpx.z __6
// Get the sign of a 16-bit unsigned number treated as a signed number.
// Returns unsigned -1 if the number is
// sgn_u16(word zp($17) w)
sgn_u16: {
.label w = $17
.label return = $c
// >w
lda.z w+1
// >w&0x80
and #$80
// if(>w&0x80)
cmp #0
bne __b1
lda #<1
sta.z return
lda #>1
sta.z return+1
rts
__b1:
lda #<-1
sta.z return
sta.z return+1
// }
rts
}
// bitmap_line_ydxd(byte zp(8) y, byte register(X) x, byte zp(4) y1, byte zp(6) yd, byte zp(9) xd)
bitmap_line_ydxd: {
.label y = 8
.label y1 = 4
.label yd = 6
.label xd = 9
.label e = 7
// e = xd>>1
lda.z xd
lsr
sta.z e
__b1:
// bitmap_plot(x,y)
ldy.z y
jsr bitmap_plot
// y = y++;
inc.z y
// e = e+xd
lda.z e
clc
adc.z xd
sta.z e
// if(yd<e)
lda.z yd
cmp.z e
bcs __b2
// x--;
dex
// e = e - yd
lda.z e
sec
sbc.z yd
sta.z e
__b2:
// y1+1
ldy.z y1
iny
// while (y!=(y1+1))
cpy.z y
bne __b1
// }
rts
}
// bitmap_line_xdyd(byte register(X) x, byte zp(4) y, byte zp(7) x1, byte zp(9) xd, byte zp(6) yd)
bitmap_line_xdyd: {
.label __6 = $a
.label y = 4
.label x1 = 7
.label xd = 9
.label yd = 6
.label e = 8
// e = yd>>1
lda.z yd
lsr
sta.z e
__b1:
// bitmap_plot(x,y)
ldy.z y
jsr bitmap_plot
// x++;
inx
// e = e+yd
lda.z e
clc
adc.z yd
sta.z e
// if(xd<e)
lda.z xd
cmp.z e
bcs __b2
// y--;
dec.z y
// e = e - xd
lda.z e
sec
sbc.z xd
sta.z e
__b2:
// x1+1
ldy.z x1
iny
sty.z __6
// while (x!=(x1+1))
cpx.z __6
bne __b1
// }
rts
}
// bitmap_plot(byte register(X) x, byte register(Y) y)
// Plot a single dot in the bitmap
// bitmap_plot(word zp(4) x, byte register(A) y)
bitmap_plot: {
.label plotter_x = $b
.label plotter_y = $d
.label plotter = $b
// plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] }
lda bitmap_plot_xhi,x
sta.z plotter_x+1
lda bitmap_plot_xlo,x
sta.z plotter_x
// plotter_y = { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
.label __0 = $19
.label plotter = $17
.label x = 4
// plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
tay
lda bitmap_plot_yhi,y
sta.z plotter_y+1
sta.z plotter+1
lda bitmap_plot_ylo,y
sta.z plotter_y
// plotter_x+plotter_y
sta.z plotter
// x & $fff8
lda.z x
and #<$fff8
sta.z __0
lda.z x+1
and #>$fff8
sta.z __0+1
// plotter += ( x & $fff8 )
lda.z plotter
clc
adc.z plotter_y
adc.z __0
sta.z plotter
lda.z plotter+1
adc.z plotter_y+1
adc.z __0+1
sta.z plotter+1
// *plotter | bitmap_plot_bit[x]
// <x
ldx.z x
// *plotter |= bitmap_plot_bit[<x]
lda bitmap_plot_bit,x
ldy #0
ora (plotter),y
// *plotter = *plotter | bitmap_plot_bit[x]
sta (plotter),y
// }
rts
}
.segment Data
// Tables for the plotter - initialized by calling bitmap_draw_init();
bitmap_plot_xlo: .fill $100, 0
bitmap_plot_xhi: .fill $100, 0
// Tables for the plotter - initialized by calling bitmap_init();
bitmap_plot_ylo: .fill $100, 0
bitmap_plot_yhi: .fill $100, 0
bitmap_plot_bit: .fill $100, 0

View File

@ -20,364 +20,262 @@ main::@1: scope:[main] from main::@1 main::@3
[10] call lines
to:main::@1
void bitmap_init(byte* bitmap_init::bitmap)
void bitmap_init(byte* bitmap_init::gfx , byte* bitmap_init::screen)
bitmap_init: scope:[bitmap_init] from main
[11] phi()
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[12] bitmap_init::bits#3 = phi( bitmap_init/$80, bitmap_init::@2/bitmap_init::bits#4 )
[12] bitmap_init::x#2 = phi( bitmap_init/0, bitmap_init::@2/bitmap_init::x#1 )
[13] bitmap_init::$0 = bitmap_init::x#2 & $f8
[14] bitmap_plot_xlo[bitmap_init::x#2] = bitmap_init::$0
[15] bitmap_plot_xhi[bitmap_init::x#2] = >BITMAP
[16] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3
[17] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1
[18] if(bitmap_init::bits#1!=0) goto bitmap_init::@6
[12] bitmap_init::bits#3 = phi( bitmap_init/$80, bitmap_init::@2/bitmap_init::bits#4 )
[13] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3
[14] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1
[15] if(bitmap_init::bits#1!=0) goto bitmap_init::@6
to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
[19] phi()
[16] phi()
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
[20] bitmap_init::bits#4 = phi( bitmap_init::@6/bitmap_init::bits#1, bitmap_init::@1/$80 )
[21] bitmap_init::x#1 = ++ bitmap_init::x#2
[22] if(bitmap_init::x#1!=0) goto bitmap_init::@1
[17] bitmap_init::bits#4 = phi( bitmap_init::@6/bitmap_init::bits#1, bitmap_init::@1/$80 )
[18] bitmap_init::x#1 = ++ bitmap_init::x#2
[19] if(bitmap_init::x#1!=0) goto bitmap_init::@1
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[23] bitmap_init::yoffs#2 = phi( bitmap_init::@2/(byte*) 0, bitmap_init::@4/bitmap_init::yoffs#4 )
[23] bitmap_init::y#2 = phi( bitmap_init::@2/0, bitmap_init::@4/bitmap_init::y#1 )
[24] bitmap_init::$10 = bitmap_init::y#2 & 7
[25] bitmap_init::$7 = < bitmap_init::yoffs#2
[26] bitmap_init::$8 = bitmap_init::$10 | bitmap_init::$7
[27] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$8
[28] bitmap_init::$9 = > bitmap_init::yoffs#2
[29] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$9
[30] if(bitmap_init::$10!=7) goto bitmap_init::@4
[20] bitmap_init::yoffs#2 = phi( bitmap_init::@2/BITMAP, bitmap_init::@4/bitmap_init::yoffs#4 )
[20] bitmap_init::y#2 = phi( bitmap_init::@2/0, bitmap_init::@4/bitmap_init::y#1 )
[21] bitmap_init::$7 = bitmap_init::y#2 & 7
[22] bitmap_init::$4 = < bitmap_init::yoffs#2
[23] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4
[24] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5
[25] bitmap_init::$6 = > bitmap_init::yoffs#2
[26] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6
[27] if(bitmap_init::$7!=7) goto bitmap_init::@4
to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
[31] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8
[28] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
[32] bitmap_init::yoffs#4 = phi( bitmap_init::@3/bitmap_init::yoffs#2, bitmap_init::@5/bitmap_init::yoffs#1 )
[33] bitmap_init::y#1 = ++ bitmap_init::y#2
[34] if(bitmap_init::y#1!=0) goto bitmap_init::@3
[29] bitmap_init::yoffs#4 = phi( bitmap_init::@3/bitmap_init::yoffs#2, bitmap_init::@5/bitmap_init::yoffs#1 )
[30] bitmap_init::y#1 = ++ bitmap_init::y#2
[31] if(bitmap_init::y#1!=0) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[35] return
[32] return
to:@return
void bitmap_clear()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
bitmap_clear: scope:[bitmap_clear] from main::@2
[36] bitmap_clear::bitmap#0 = *bitmap_plot_xhi w= *bitmap_plot_xlo
[37] bitmap_clear::bitmap#5 = (byte*)bitmap_clear::bitmap#0
[33] phi()
[34] call memset
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
[38] bitmap_clear::y#4 = phi( bitmap_clear/0, bitmap_clear::@3/bitmap_clear::y#1 )
[38] bitmap_clear::bitmap#3 = phi( bitmap_clear/bitmap_clear::bitmap#5, bitmap_clear::@3/bitmap_clear::bitmap#1 )
to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
[39] bitmap_clear::x#2 = phi( bitmap_clear::@1/0, bitmap_clear::@2/bitmap_clear::x#1 )
[39] bitmap_clear::bitmap#2 = phi( bitmap_clear::@1/bitmap_clear::bitmap#3, bitmap_clear::@2/bitmap_clear::bitmap#1 )
[40] *bitmap_clear::bitmap#2 = 0
[41] bitmap_clear::bitmap#1 = ++ bitmap_clear::bitmap#2
[42] bitmap_clear::x#1 = ++ bitmap_clear::x#2
[43] if(bitmap_clear::x#1!=$c8) goto bitmap_clear::@2
to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
[44] bitmap_clear::y#1 = ++ bitmap_clear::y#4
[45] if(bitmap_clear::y#1!=$28) goto bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
[35] phi()
[36] call memset
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
[46] return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
[37] return
to:@return
void init_screen()
init_screen: scope:[init_screen] from main::@3
[47] phi()
[38] phi()
to:init_screen::@1
init_screen::@1: scope:[init_screen] from init_screen init_screen::@2
[48] init_screen::c#2 = phi( init_screen/SCREEN, init_screen::@2/init_screen::c#1 )
[49] if(init_screen::c#2!=SCREEN+$400) goto init_screen::@2
[39] init_screen::c#2 = phi( init_screen/SCREEN, init_screen::@2/init_screen::c#1 )
[40] if(init_screen::c#2!=SCREEN+$400) goto init_screen::@2
to:init_screen::@return
init_screen::@return: scope:[init_screen] from init_screen::@1
[50] return
[41] return
to:@return
init_screen::@2: scope:[init_screen] from init_screen::@1
[51] *init_screen::c#2 = $14
[52] init_screen::c#1 = ++ init_screen::c#2
[42] *init_screen::c#2 = $14
[43] init_screen::c#1 = ++ init_screen::c#2
to:init_screen::@1
void lines()
lines: scope:[lines] from main::@1
[53] phi()
[44] phi()
to:lines::@1
lines::@1: scope:[lines] from lines lines::@3
[54] lines::l#2 = phi( lines/0, lines::@3/lines::l#1 )
[55] if(lines::l#2<lines_cnt) goto lines::@2
[45] lines::l#2 = phi( lines/0, lines::@3/lines::l#1 )
[46] if(lines::l#2<LINES) goto lines::@2
to:lines::@return
lines::@return: scope:[lines] from lines::@1
[56] return
[47] return
to:@return
lines::@2: scope:[lines] from lines::@1
[57] bitmap_line::x0#0 = lines_x[lines::l#2]
[58] bitmap_line::x1#0 = (lines_x+1)[lines::l#2]
[59] bitmap_line::y0#0 = lines_y[lines::l#2]
[60] bitmap_line::y1#0 = (lines_y+1)[lines::l#2]
[61] call bitmap_line
[48] bitmap_line::x1#0 = lines_x[lines::l#2]
[49] bitmap_line::y1#0 = lines_y[lines::l#2]
[50] bitmap_line::x2#0 = (lines_x+1)[lines::l#2]
[51] bitmap_line::y2#0 = (lines_y+1)[lines::l#2]
[52] call bitmap_line
to:lines::@3
lines::@3: scope:[lines] from lines::@2
[62] lines::l#1 = ++ lines::l#2
[53] lines::l#1 = ++ lines::l#2
to:lines::@1
void bitmap_line(byte bitmap_line::x0 , byte bitmap_line::x1 , byte bitmap_line::y0 , byte bitmap_line::y1)
void* memset(void* memset::str , byte memset::c , word memset::num)
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
[54] memset::c#4 = phi( bitmap_clear/bitmap_clear::col#0, bitmap_clear::@1/0 )
[54] memset::str#3 = phi( bitmap_clear/(void*)SCREEN, bitmap_clear::@1/(void*)BITMAP )
[54] memset::num#2 = phi( bitmap_clear/$3e8, bitmap_clear::@1/$1f40 )
[55] if(memset::num#2<=0) goto memset::@return
to:memset::@1
memset::@1: scope:[memset] from memset
[56] memset::end#0 = (byte*)memset::str#3 + memset::num#2
[57] memset::dst#4 = (byte*)memset::str#3
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[58] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
[59] if(memset::dst#2!=memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset memset::@2
[60] return
to:@return
memset::@3: scope:[memset] from memset::@2
[61] *memset::dst#2 = memset::c#4
[62] memset::dst#1 = ++ memset::dst#2
to:memset::@2
void bitmap_line(word bitmap_line::x1 , word bitmap_line::y1 , word bitmap_line::x2 , word bitmap_line::y2)
bitmap_line: scope:[bitmap_line] from lines::@2
[63] if(bitmap_line::x0#0<bitmap_line::x1#0) goto bitmap_line::@1
to:bitmap_line::@2
bitmap_line::@2: scope:[bitmap_line] from bitmap_line
[64] bitmap_line::xd#2 = bitmap_line::x0#0 - bitmap_line::x1#0
[65] if(bitmap_line::y0#0<bitmap_line::y1#0) goto bitmap_line::@7
to:bitmap_line::@3
bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@2
[66] bitmap_line::yd#2 = bitmap_line::y0#0 - bitmap_line::y1#0
[67] if(bitmap_line::yd#2<bitmap_line::xd#2) goto bitmap_line::@8
to:bitmap_line::@4
bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3
[68] bitmap_line_ydxi::y#0 = bitmap_line::y1#0
[69] bitmap_line_ydxi::x#0 = bitmap_line::x1#0
[70] bitmap_line_ydxi::y1#0 = bitmap_line::y0#0
[71] bitmap_line_ydxi::yd#0 = bitmap_line::yd#2
[72] bitmap_line_ydxi::xd#0 = bitmap_line::xd#2
[73] call bitmap_line_ydxi
to:bitmap_line::@return
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@12 bitmap_line::@13 bitmap_line::@14 bitmap_line::@4 bitmap_line::@6 bitmap_line::@8 bitmap_line::@9
[74] return
to:@return
bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@3
[75] bitmap_line_xdyi::x#0 = bitmap_line::x1#0
[76] bitmap_line_xdyi::y#0 = bitmap_line::y1#0
[77] bitmap_line_xdyi::x1#0 = bitmap_line::x0#0
[78] bitmap_line_xdyi::xd#0 = bitmap_line::xd#2
[79] bitmap_line_xdyi::yd#0 = bitmap_line::yd#2
[80] call bitmap_line_xdyi
to:bitmap_line::@return
bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@2
[81] bitmap_line::yd#1 = bitmap_line::y1#0 - bitmap_line::y0#0
[82] if(bitmap_line::yd#1<bitmap_line::xd#2) goto bitmap_line::@9
to:bitmap_line::@10
bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@7
[83] bitmap_line_ydxd::y#0 = bitmap_line::y0#0
[84] bitmap_line_ydxd::x#0 = bitmap_line::x0#0
[85] bitmap_line_ydxd::y1#0 = bitmap_line::y1#0
[86] bitmap_line_ydxd::yd#0 = bitmap_line::yd#1
[87] bitmap_line_ydxd::xd#0 = bitmap_line::xd#2
[88] call bitmap_line_ydxd
to:bitmap_line::@return
bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@7
[89] bitmap_line_xdyd::x#0 = bitmap_line::x1#0
[90] bitmap_line_xdyd::y#0 = bitmap_line::y1#0
[91] bitmap_line_xdyd::x1#0 = bitmap_line::x0#0
[92] bitmap_line_xdyd::xd#0 = bitmap_line::xd#2
[93] bitmap_line_xdyd::yd#0 = bitmap_line::yd#1
[94] call bitmap_line_xdyd
to:bitmap_line::@return
bitmap_line::@1: scope:[bitmap_line] from bitmap_line
[95] bitmap_line::xd#1 = bitmap_line::x1#0 - bitmap_line::x0#0
[96] if(bitmap_line::y0#0<bitmap_line::y1#0) goto bitmap_line::@11
to:bitmap_line::@5
bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@1
[97] bitmap_line::yd#10 = bitmap_line::y0#0 - bitmap_line::y1#0
[98] if(bitmap_line::yd#10<bitmap_line::xd#1) goto bitmap_line::@12
to:bitmap_line::@6
bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5
[99] bitmap_line_ydxd::y#1 = bitmap_line::y1#0
[100] bitmap_line_ydxd::x#1 = bitmap_line::x1#0
[101] bitmap_line_ydxd::y1#1 = bitmap_line::y0#0
[102] bitmap_line_ydxd::yd#1 = bitmap_line::yd#10
[103] bitmap_line_ydxd::xd#1 = bitmap_line::xd#1
[104] call bitmap_line_ydxd
to:bitmap_line::@return
bitmap_line::@12: scope:[bitmap_line] from bitmap_line::@5
[105] bitmap_line_xdyd::x#1 = bitmap_line::x0#0
[106] bitmap_line_xdyd::y#1 = bitmap_line::y0#0
[107] bitmap_line_xdyd::x1#1 = bitmap_line::x1#0
[108] bitmap_line_xdyd::xd#1 = bitmap_line::xd#1
[109] bitmap_line_xdyd::yd#1 = bitmap_line::yd#10
[110] call bitmap_line_xdyd
to:bitmap_line::@return
bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@1
[111] bitmap_line::yd#11 = bitmap_line::y1#0 - bitmap_line::y0#0
[112] if(bitmap_line::yd#11<bitmap_line::xd#1) goto bitmap_line::@13
[63] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0
[64] call abs_u16
[65] abs_u16::return#0 = abs_u16::return#4
to:bitmap_line::@12
bitmap_line::@12: scope:[bitmap_line] from bitmap_line
[66] bitmap_line::dx#0 = abs_u16::return#0
[67] abs_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0
[68] call abs_u16
[69] abs_u16::return#1 = abs_u16::return#4
to:bitmap_line::@13
bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12
[70] bitmap_line::dy#0 = abs_u16::return#1
[71] if(bitmap_line::dx#0!=0) goto bitmap_line::@1
to:bitmap_line::@18
bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13
[72] if(bitmap_line::dy#0==0) goto bitmap_line::@4
to:bitmap_line::@1
bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18
[73] sgn_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0
[74] call sgn_u16
[75] sgn_u16::return#0 = sgn_u16::return#4
to:bitmap_line::@14
bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@11
[113] bitmap_line_ydxi::y#1 = bitmap_line::y0#0
[114] bitmap_line_ydxi::x#1 = bitmap_line::x0#0
[115] bitmap_line_ydxi::y1#1 = bitmap_line::y1#0
[116] bitmap_line_ydxi::yd#1 = bitmap_line::yd#11
[117] bitmap_line_ydxi::xd#1 = bitmap_line::xd#1
[118] call bitmap_line_ydxi
bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1
[76] bitmap_line::sx#0 = sgn_u16::return#0
[77] sgn_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0
[78] call sgn_u16
[79] sgn_u16::return#1 = sgn_u16::return#4
to:bitmap_line::@15
bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14
[80] bitmap_line::sy#0 = sgn_u16::return#1
[81] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2
to:bitmap_line::@5
bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15
[82] bitmap_line::e#0 = bitmap_line::dx#0 >> 1
to:bitmap_line::@6
bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7
[83] bitmap_line::e#3 = phi( bitmap_line::@5/bitmap_line::e#0, bitmap_line::@7/bitmap_line::e#6 )
[83] bitmap_line::y#4 = phi( bitmap_line::@5/bitmap_line::y1#0, bitmap_line::@7/bitmap_line::y#1 )
[83] bitmap_line::x#13 = phi( bitmap_line::@5/bitmap_line::x1#0, bitmap_line::@7/bitmap_line::x#12 )
[84] bitmap_plot::x#1 = bitmap_line::x#13
[85] bitmap_plot::y#1 = (byte)bitmap_line::y#4
[86] call bitmap_plot
to:bitmap_line::@16
bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6
[87] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0
[88] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0
[89] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7
to:bitmap_line::@8
bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16
[90] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0
[91] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0
to:bitmap_line::@7
bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8
[92] bitmap_line::e#6 = phi( bitmap_line::@16/bitmap_line::e#1, bitmap_line::@8/bitmap_line::e#2 )
[92] bitmap_line::x#12 = phi( bitmap_line::@16/bitmap_line::x#13, bitmap_line::@8/bitmap_line::x#1 )
[93] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6
to:bitmap_line::@3
bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7
[94] bitmap_line::y#7 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@7/bitmap_line::y#1 )
[94] bitmap_line::x#6 = phi( bitmap_line::@10/bitmap_line::x#15, bitmap_line::@7/bitmap_line::x#12 )
[95] bitmap_plot::x#2 = bitmap_line::x#6
[96] bitmap_plot::y#2 = (byte)bitmap_line::y#7
[97] call bitmap_plot
to:bitmap_line::@return
bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@11
[119] bitmap_line_xdyi::x#1 = bitmap_line::x0#0
[120] bitmap_line_xdyi::y#1 = bitmap_line::y0#0
[121] bitmap_line_xdyi::x1#1 = bitmap_line::x1#0
[122] bitmap_line_xdyi::xd#1 = bitmap_line::xd#1
[123] bitmap_line_xdyi::yd#1 = bitmap_line::yd#11
[124] call bitmap_line_xdyi
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4
[98] return
to:@return
bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15
[99] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1
to:bitmap_line::@9
bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2
[100] bitmap_line::e1#3 = phi( bitmap_line::@10/bitmap_line::e1#6, bitmap_line::@2/bitmap_line::e1#0 )
[100] bitmap_line::y#15 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@2/bitmap_line::y1#0 )
[100] bitmap_line::x#7 = phi( bitmap_line::@10/bitmap_line::x#15, bitmap_line::@2/bitmap_line::x1#0 )
[101] bitmap_plot::x#3 = bitmap_line::x#7
[102] bitmap_plot::y#3 = (byte)bitmap_line::y#15
[103] call bitmap_plot
to:bitmap_line::@17
bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9
[104] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0
[105] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0
[106] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10
to:bitmap_line::@11
bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17
[107] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0
[108] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0
to:bitmap_line::@10
bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17
[109] bitmap_line::e1#6 = phi( bitmap_line::@11/bitmap_line::e1#2, bitmap_line::@17/bitmap_line::e1#1 )
[109] bitmap_line::y#13 = phi( bitmap_line::@11/bitmap_line::y#2, bitmap_line::@17/bitmap_line::y#15 )
[110] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9
to:bitmap_line::@3
bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18
[111] bitmap_plot::x#0 = bitmap_line::x1#0
[112] bitmap_plot::y#0 = (byte)bitmap_line::y1#0
[113] call bitmap_plot
to:bitmap_line::@return
void bitmap_line_ydxi(byte bitmap_line_ydxi::y , byte bitmap_line_ydxi::x , byte bitmap_line_ydxi::y1 , byte bitmap_line_ydxi::yd , byte bitmap_line_ydxi::xd)
bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@14 bitmap_line::@4
[125] bitmap_line_ydxi::y1#6 = phi( bitmap_line::@14/bitmap_line_ydxi::y1#1, bitmap_line::@4/bitmap_line_ydxi::y1#0 )
[125] bitmap_line_ydxi::yd#5 = phi( bitmap_line::@14/bitmap_line_ydxi::yd#1, bitmap_line::@4/bitmap_line_ydxi::yd#0 )
[125] bitmap_line_ydxi::y#6 = phi( bitmap_line::@14/bitmap_line_ydxi::y#1, bitmap_line::@4/bitmap_line_ydxi::y#0 )
[125] bitmap_line_ydxi::x#5 = phi( bitmap_line::@14/bitmap_line_ydxi::x#1, bitmap_line::@4/bitmap_line_ydxi::x#0 )
[125] bitmap_line_ydxi::xd#2 = phi( bitmap_line::@14/bitmap_line_ydxi::xd#1, bitmap_line::@4/bitmap_line_ydxi::xd#0 )
[126] bitmap_line_ydxi::e#0 = bitmap_line_ydxi::xd#2 >> 1
to:bitmap_line_ydxi::@1
bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2
[127] bitmap_line_ydxi::e#3 = phi( bitmap_line_ydxi/bitmap_line_ydxi::e#0, bitmap_line_ydxi::@2/bitmap_line_ydxi::e#6 )
[127] bitmap_line_ydxi::y#3 = phi( bitmap_line_ydxi/bitmap_line_ydxi::y#6, bitmap_line_ydxi::@2/bitmap_line_ydxi::y#2 )
[127] bitmap_line_ydxi::x#3 = phi( bitmap_line_ydxi/bitmap_line_ydxi::x#5, bitmap_line_ydxi::@2/bitmap_line_ydxi::x#6 )
[128] bitmap_plot::x#2 = bitmap_line_ydxi::x#3
[129] bitmap_plot::y#2 = bitmap_line_ydxi::y#3
[130] call bitmap_plot
to:bitmap_line_ydxi::@4
bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1
[131] bitmap_line_ydxi::y#2 = ++ bitmap_line_ydxi::y#3
[132] bitmap_line_ydxi::e#1 = bitmap_line_ydxi::e#3 + bitmap_line_ydxi::xd#2
[133] if(bitmap_line_ydxi::yd#5>=bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2
to:bitmap_line_ydxi::@3
bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4
[134] bitmap_line_ydxi::x#2 = ++ bitmap_line_ydxi::x#3
[135] bitmap_line_ydxi::e#2 = bitmap_line_ydxi::e#1 - bitmap_line_ydxi::yd#5
to:bitmap_line_ydxi::@2
bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4
[136] bitmap_line_ydxi::e#6 = phi( bitmap_line_ydxi::@3/bitmap_line_ydxi::e#2, bitmap_line_ydxi::@4/bitmap_line_ydxi::e#1 )
[136] bitmap_line_ydxi::x#6 = phi( bitmap_line_ydxi::@3/bitmap_line_ydxi::x#2, bitmap_line_ydxi::@4/bitmap_line_ydxi::x#3 )
[137] bitmap_line_ydxi::$6 = bitmap_line_ydxi::y1#6 + 1
[138] if(bitmap_line_ydxi::y#2!=bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1
to:bitmap_line_ydxi::@return
bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2
[139] return
word abs_u16(word abs_u16::w)
abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12
[114] abs_u16::w#2 = phi( bitmap_line/abs_u16::w#0, bitmap_line::@12/abs_u16::w#1 )
[115] abs_u16::$0 = > abs_u16::w#2
[116] abs_u16::$1 = abs_u16::$0 & $80
[117] if(0!=abs_u16::$1) goto abs_u16::@1
to:abs_u16::@return
abs_u16::@1: scope:[abs_u16] from abs_u16
[118] abs_u16::return#2 = - abs_u16::w#2
to:abs_u16::@return
abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1
[119] abs_u16::return#4 = phi( abs_u16::@1/abs_u16::return#2, abs_u16/abs_u16::w#2 )
[120] return
to:@return
void bitmap_line_xdyi(byte bitmap_line_xdyi::x , byte bitmap_line_xdyi::y , byte bitmap_line_xdyi::x1 , byte bitmap_line_xdyi::xd , byte bitmap_line_xdyi::yd)
bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@13 bitmap_line::@8
[140] bitmap_line_xdyi::x1#6 = phi( bitmap_line::@13/bitmap_line_xdyi::x1#1, bitmap_line::@8/bitmap_line_xdyi::x1#0 )
[140] bitmap_line_xdyi::xd#5 = phi( bitmap_line::@13/bitmap_line_xdyi::xd#1, bitmap_line::@8/bitmap_line_xdyi::xd#0 )
[140] bitmap_line_xdyi::y#5 = phi( bitmap_line::@13/bitmap_line_xdyi::y#1, bitmap_line::@8/bitmap_line_xdyi::y#0 )
[140] bitmap_line_xdyi::x#6 = phi( bitmap_line::@13/bitmap_line_xdyi::x#1, bitmap_line::@8/bitmap_line_xdyi::x#0 )
[140] bitmap_line_xdyi::yd#2 = phi( bitmap_line::@13/bitmap_line_xdyi::yd#1, bitmap_line::@8/bitmap_line_xdyi::yd#0 )
[141] bitmap_line_xdyi::e#0 = bitmap_line_xdyi::yd#2 >> 1
to:bitmap_line_xdyi::@1
bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2
[142] bitmap_line_xdyi::e#3 = phi( bitmap_line_xdyi/bitmap_line_xdyi::e#0, bitmap_line_xdyi::@2/bitmap_line_xdyi::e#6 )
[142] bitmap_line_xdyi::y#3 = phi( bitmap_line_xdyi/bitmap_line_xdyi::y#5, bitmap_line_xdyi::@2/bitmap_line_xdyi::y#6 )
[142] bitmap_line_xdyi::x#3 = phi( bitmap_line_xdyi/bitmap_line_xdyi::x#6, bitmap_line_xdyi::@2/bitmap_line_xdyi::x#2 )
[143] bitmap_plot::x#0 = bitmap_line_xdyi::x#3
[144] bitmap_plot::y#0 = bitmap_line_xdyi::y#3
[145] call bitmap_plot
to:bitmap_line_xdyi::@4
bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1
[146] bitmap_line_xdyi::x#2 = ++ bitmap_line_xdyi::x#3
[147] bitmap_line_xdyi::e#1 = bitmap_line_xdyi::e#3 + bitmap_line_xdyi::yd#2
[148] if(bitmap_line_xdyi::xd#5>=bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2
to:bitmap_line_xdyi::@3
bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4
[149] bitmap_line_xdyi::y#2 = ++ bitmap_line_xdyi::y#3
[150] bitmap_line_xdyi::e#2 = bitmap_line_xdyi::e#1 - bitmap_line_xdyi::xd#5
to:bitmap_line_xdyi::@2
bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4
[151] bitmap_line_xdyi::e#6 = phi( bitmap_line_xdyi::@3/bitmap_line_xdyi::e#2, bitmap_line_xdyi::@4/bitmap_line_xdyi::e#1 )
[151] bitmap_line_xdyi::y#6 = phi( bitmap_line_xdyi::@3/bitmap_line_xdyi::y#2, bitmap_line_xdyi::@4/bitmap_line_xdyi::y#3 )
[152] bitmap_line_xdyi::$6 = bitmap_line_xdyi::x1#6 + 1
[153] if(bitmap_line_xdyi::x#2!=bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1
to:bitmap_line_xdyi::@return
bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2
[154] return
word sgn_u16(word sgn_u16::w)
sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14
[121] sgn_u16::w#2 = phi( bitmap_line::@1/sgn_u16::w#0, bitmap_line::@14/sgn_u16::w#1 )
[122] sgn_u16::$0 = > sgn_u16::w#2
[123] sgn_u16::$1 = sgn_u16::$0 & $80
[124] if(0!=sgn_u16::$1) goto sgn_u16::@1
to:sgn_u16::@return
sgn_u16::@1: scope:[sgn_u16] from sgn_u16
[125] phi()
to:sgn_u16::@return
sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1
[126] sgn_u16::return#4 = phi( sgn_u16::@1/-1, sgn_u16/1 )
[127] return
to:@return
void bitmap_line_ydxd(byte bitmap_line_ydxd::y , byte bitmap_line_ydxd::x , byte bitmap_line_ydxd::y1 , byte bitmap_line_ydxd::yd , byte bitmap_line_ydxd::xd)
bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@10 bitmap_line::@6
[155] bitmap_line_ydxd::y1#6 = phi( bitmap_line::@10/bitmap_line_ydxd::y1#0, bitmap_line::@6/bitmap_line_ydxd::y1#1 )
[155] bitmap_line_ydxd::yd#5 = phi( bitmap_line::@10/bitmap_line_ydxd::yd#0, bitmap_line::@6/bitmap_line_ydxd::yd#1 )
[155] bitmap_line_ydxd::y#7 = phi( bitmap_line::@10/bitmap_line_ydxd::y#0, bitmap_line::@6/bitmap_line_ydxd::y#1 )
[155] bitmap_line_ydxd::x#5 = phi( bitmap_line::@10/bitmap_line_ydxd::x#0, bitmap_line::@6/bitmap_line_ydxd::x#1 )
[155] bitmap_line_ydxd::xd#2 = phi( bitmap_line::@10/bitmap_line_ydxd::xd#0, bitmap_line::@6/bitmap_line_ydxd::xd#1 )
[156] bitmap_line_ydxd::e#0 = bitmap_line_ydxd::xd#2 >> 1
to:bitmap_line_ydxd::@1
bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2
[157] bitmap_line_ydxd::e#3 = phi( bitmap_line_ydxd/bitmap_line_ydxd::e#0, bitmap_line_ydxd::@2/bitmap_line_ydxd::e#6 )
[157] bitmap_line_ydxd::y#2 = phi( bitmap_line_ydxd/bitmap_line_ydxd::y#7, bitmap_line_ydxd::@2/bitmap_line_ydxd::y#3 )
[157] bitmap_line_ydxd::x#3 = phi( bitmap_line_ydxd/bitmap_line_ydxd::x#5, bitmap_line_ydxd::@2/bitmap_line_ydxd::x#6 )
[158] bitmap_plot::x#3 = bitmap_line_ydxd::x#3
[159] bitmap_plot::y#3 = bitmap_line_ydxd::y#2
[160] call bitmap_plot
to:bitmap_line_ydxd::@4
bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1
[161] bitmap_line_ydxd::y#3 = ++ bitmap_line_ydxd::y#2
[162] bitmap_line_ydxd::e#1 = bitmap_line_ydxd::e#3 + bitmap_line_ydxd::xd#2
[163] if(bitmap_line_ydxd::yd#5>=bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2
to:bitmap_line_ydxd::@3
bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4
[164] bitmap_line_ydxd::x#2 = -- bitmap_line_ydxd::x#3
[165] bitmap_line_ydxd::e#2 = bitmap_line_ydxd::e#1 - bitmap_line_ydxd::yd#5
to:bitmap_line_ydxd::@2
bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4
[166] bitmap_line_ydxd::e#6 = phi( bitmap_line_ydxd::@3/bitmap_line_ydxd::e#2, bitmap_line_ydxd::@4/bitmap_line_ydxd::e#1 )
[166] bitmap_line_ydxd::x#6 = phi( bitmap_line_ydxd::@3/bitmap_line_ydxd::x#2, bitmap_line_ydxd::@4/bitmap_line_ydxd::x#3 )
[167] bitmap_line_ydxd::$6 = bitmap_line_ydxd::y1#6 + 1
[168] if(bitmap_line_ydxd::y#3!=bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1
to:bitmap_line_ydxd::@return
bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
[169] return
to:@return
void bitmap_line_xdyd(byte bitmap_line_xdyd::x , byte bitmap_line_xdyd::y , byte bitmap_line_xdyd::x1 , byte bitmap_line_xdyd::xd , byte bitmap_line_xdyd::yd)
bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@12 bitmap_line::@9
[170] bitmap_line_xdyd::x1#6 = phi( bitmap_line::@12/bitmap_line_xdyd::x1#1, bitmap_line::@9/bitmap_line_xdyd::x1#0 )
[170] bitmap_line_xdyd::xd#5 = phi( bitmap_line::@12/bitmap_line_xdyd::xd#1, bitmap_line::@9/bitmap_line_xdyd::xd#0 )
[170] bitmap_line_xdyd::y#5 = phi( bitmap_line::@12/bitmap_line_xdyd::y#1, bitmap_line::@9/bitmap_line_xdyd::y#0 )
[170] bitmap_line_xdyd::x#6 = phi( bitmap_line::@12/bitmap_line_xdyd::x#1, bitmap_line::@9/bitmap_line_xdyd::x#0 )
[170] bitmap_line_xdyd::yd#2 = phi( bitmap_line::@12/bitmap_line_xdyd::yd#1, bitmap_line::@9/bitmap_line_xdyd::yd#0 )
[171] bitmap_line_xdyd::e#0 = bitmap_line_xdyd::yd#2 >> 1
to:bitmap_line_xdyd::@1
bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2
[172] bitmap_line_xdyd::e#3 = phi( bitmap_line_xdyd/bitmap_line_xdyd::e#0, bitmap_line_xdyd::@2/bitmap_line_xdyd::e#6 )
[172] bitmap_line_xdyd::y#3 = phi( bitmap_line_xdyd/bitmap_line_xdyd::y#5, bitmap_line_xdyd::@2/bitmap_line_xdyd::y#6 )
[172] bitmap_line_xdyd::x#3 = phi( bitmap_line_xdyd/bitmap_line_xdyd::x#6, bitmap_line_xdyd::@2/bitmap_line_xdyd::x#2 )
[173] bitmap_plot::x#1 = bitmap_line_xdyd::x#3
[174] bitmap_plot::y#1 = bitmap_line_xdyd::y#3
[175] call bitmap_plot
to:bitmap_line_xdyd::@4
bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1
[176] bitmap_line_xdyd::x#2 = ++ bitmap_line_xdyd::x#3
[177] bitmap_line_xdyd::e#1 = bitmap_line_xdyd::e#3 + bitmap_line_xdyd::yd#2
[178] if(bitmap_line_xdyd::xd#5>=bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2
to:bitmap_line_xdyd::@3
bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4
[179] bitmap_line_xdyd::y#2 = -- bitmap_line_xdyd::y#3
[180] bitmap_line_xdyd::e#2 = bitmap_line_xdyd::e#1 - bitmap_line_xdyd::xd#5
to:bitmap_line_xdyd::@2
bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4
[181] bitmap_line_xdyd::e#6 = phi( bitmap_line_xdyd::@3/bitmap_line_xdyd::e#2, bitmap_line_xdyd::@4/bitmap_line_xdyd::e#1 )
[181] bitmap_line_xdyd::y#6 = phi( bitmap_line_xdyd::@3/bitmap_line_xdyd::y#2, bitmap_line_xdyd::@4/bitmap_line_xdyd::y#3 )
[182] bitmap_line_xdyd::$6 = bitmap_line_xdyd::x1#6 + 1
[183] if(bitmap_line_xdyd::x#2!=bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1
to:bitmap_line_xdyd::@return
bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2
[184] return
to:@return
void bitmap_plot(byte bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1
[185] bitmap_plot::y#4 = phi( bitmap_line_xdyd::@1/bitmap_plot::y#1, bitmap_line_xdyi::@1/bitmap_plot::y#0, bitmap_line_ydxd::@1/bitmap_plot::y#3, bitmap_line_ydxi::@1/bitmap_plot::y#2 )
[185] bitmap_plot::x#4 = phi( bitmap_line_xdyd::@1/bitmap_plot::x#1, bitmap_line_xdyi::@1/bitmap_plot::x#0, bitmap_line_ydxd::@1/bitmap_plot::x#3, bitmap_line_ydxi::@1/bitmap_plot::x#2 )
[186] bitmap_plot::plotter_x#0 = bitmap_plot_xhi[bitmap_plot::x#4] w= bitmap_plot_xlo[bitmap_plot::x#4]
[187] bitmap_plot::plotter_y#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
[188] bitmap_plot::plotter#0 = bitmap_plot::plotter_x#0 + bitmap_plot::plotter_y#0
[189] bitmap_plot::$1 = *((byte*)bitmap_plot::plotter#0) | bitmap_plot_bit[bitmap_plot::x#4]
[190] *((byte*)bitmap_plot::plotter#0) = bitmap_plot::$1
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
[128] bitmap_plot::x#4 = phi( bitmap_line::@3/bitmap_plot::x#2, bitmap_line::@4/bitmap_plot::x#0, bitmap_line::@6/bitmap_plot::x#1, bitmap_line::@9/bitmap_plot::x#3 )
[128] bitmap_plot::y#4 = phi( bitmap_line::@3/bitmap_plot::y#2, bitmap_line::@4/bitmap_plot::y#0, bitmap_line::@6/bitmap_plot::y#1, bitmap_line::@9/bitmap_plot::y#3 )
[129] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
[130] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
[131] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
[132] bitmap_plot::$1 = < bitmap_plot::x#4
[133] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[191] return
[134] return
to:@return

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,6 @@
const nomodify byte* BITMAP = (byte*) 8192
const nomodify byte* D011 = (byte*) 53265
const nomodify byte LINES = 8
const byte OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
const byte OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
const nomodify byte* SCREEN = (byte*) 1024
@ -8,253 +9,171 @@ const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void bitmap_clear()
byte* bitmap_clear::bitmap
word bitmap_clear::bitmap#0 bitmap zp[2]:11 11.0
byte* bitmap_clear::bitmap#1 bitmap zp[2]:11 420.59999999999997
byte* bitmap_clear::bitmap#2 bitmap zp[2]:11 1552.0
byte* bitmap_clear::bitmap#3 bitmap zp[2]:11 213.0
byte* bitmap_clear::bitmap#5 bitmap zp[2]:11 22.0
byte bitmap_clear::x
byte bitmap_clear::x#1 reg byte x 1501.5
byte bitmap_clear::x#2 reg byte x 667.3333333333334
byte bitmap_clear::y
byte bitmap_clear::y#1 y zp[1]:2 151.5
byte bitmap_clear::y#4 y zp[1]:2 33.666666666666664
void bitmap_init(byte* bitmap_init::bitmap)
byte~ bitmap_init::$0 reg byte a 202.0
byte~ bitmap_init::$10 zp[1]:9 50.5
byte~ bitmap_init::$7 reg byte a 202.0
byte~ bitmap_init::$8 reg byte a 202.0
byte~ bitmap_init::$9 reg byte a 202.0
byte* bitmap_init::bitmap
const nomodify byte WHITE = 1
word abs_u16(word abs_u16::w)
byte~ abs_u16::$0 reg byte a 2000002.0
byte~ abs_u16::$1 reg byte a 2000002.0
word abs_u16::return
word abs_u16::return#0 return zp[2]:10 200002.0
word abs_u16::return#1 return zp[2]:10 200002.0
word abs_u16::return#2 return zp[2]:10 2000002.0
word abs_u16::return#4 return zp[2]:10 550001.0
word abs_u16::w
word abs_u16::w#0 w zp[2]:10 200002.0
word abs_u16::w#1 w zp[2]:10 200002.0
word abs_u16::w#2 w zp[2]:10 800001.25
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
byte bitmap_clear::bgcol
byte bitmap_clear::col
const byte bitmap_clear::col#0 col = WHITE*$10
byte bitmap_clear::fgcol
byte* bitmap_gfx
void bitmap_init(byte* bitmap_init::gfx , byte* bitmap_init::screen)
byte~ bitmap_init::$4 reg byte a 202.0
byte~ bitmap_init::$5 reg byte a 202.0
byte~ bitmap_init::$6 reg byte a 202.0
byte~ bitmap_init::$7 zp[1]:14 50.5
byte bitmap_init::bits
byte bitmap_init::bits#1 reg byte y 101.0
byte bitmap_init::bits#3 reg byte y 60.599999999999994
byte bitmap_init::bits#4 reg byte y 67.33333333333333
byte bitmap_init::bits#1 reg byte a 101.0
byte bitmap_init::bits#3 reg byte a 151.5
byte bitmap_init::bits#4 reg byte a 67.33333333333333
byte* bitmap_init::gfx
byte* bitmap_init::screen
byte bitmap_init::x
byte bitmap_init::x#1 reg byte x 151.5
byte bitmap_init::x#2 reg byte x 67.33333333333333
byte bitmap_init::x#2 reg byte x 50.5
byte bitmap_init::y
byte bitmap_init::y#1 reg byte x 151.5
byte bitmap_init::y#2 reg byte x 50.5
byte* bitmap_init::yoffs
byte* bitmap_init::yoffs#1 yoffs zp[2]:11 202.0
byte* bitmap_init::yoffs#2 yoffs zp[2]:11 63.125
byte* bitmap_init::yoffs#4 yoffs zp[2]:11 101.0
void bitmap_line(byte bitmap_line::x0 , byte bitmap_line::x1 , byte bitmap_line::y0 , byte bitmap_line::y1)
byte bitmap_line::x0
byte bitmap_line::x0#0 x0 zp[1]:5 39565.65217391305
byte bitmap_line::x1
byte bitmap_line::x1#0 x1 zp[1]:7 41364.09090909091
byte bitmap_line::xd
byte bitmap_line::xd#1 xd zp[1]:9 35000.35
byte bitmap_line::xd#2 xd zp[1]:9 35000.35
byte bitmap_line::y0
byte bitmap_line::y0#0 y0 zp[1]:4 57619.66666666667
byte bitmap_line::y1
byte bitmap_line::y1#0 reg byte y 60500.650000000016
byte bitmap_line::yd
byte bitmap_line::yd#1 yd zp[1]:6 44444.88888888889
byte bitmap_line::yd#10 yd zp[1]:6 44444.88888888889
byte bitmap_line::yd#11 yd_1 zp[1]:3 44444.88888888889
byte bitmap_line::yd#2 yd_1 zp[1]:3 44444.88888888889
void bitmap_line_xdyd(byte bitmap_line_xdyd::x , byte bitmap_line_xdyd::y , byte bitmap_line_xdyd::x1 , byte bitmap_line_xdyd::xd , byte bitmap_line_xdyd::yd)
byte~ bitmap_line_xdyd::$6 zp[1]:10 2.000000002E9
byte bitmap_line_xdyd::e
byte bitmap_line_xdyd::e#0 e zp[1]:8 2000002.0
byte bitmap_line_xdyd::e#1 e zp[1]:8 1.3333333346666667E9
byte bitmap_line_xdyd::e#2 e zp[1]:8 2.000000002E9
byte bitmap_line_xdyd::e#3 e zp[1]:8 4.0020000059999996E8
byte bitmap_line_xdyd::e#6 e zp[1]:8 1.000000001E9
byte bitmap_line_xdyd::x
byte bitmap_line_xdyd::x#0 reg byte x 40000.4
byte bitmap_line_xdyd::x#1 reg byte x 40000.4
byte bitmap_line_xdyd::x#2 reg byte x 3.75000000375E8
byte bitmap_line_xdyd::x#3 reg byte x 7.50250001E8
byte bitmap_line_xdyd::x#6 reg byte x 600001.5
byte bitmap_line_xdyd::x1
byte bitmap_line_xdyd::x1#0 x1 zp[1]:7 66667.33333333333
byte bitmap_line_xdyd::x1#1 x1 zp[1]:7 66667.33333333333
byte bitmap_line_xdyd::x1#6 x1 zp[1]:7 7.144285735714285E7
byte bitmap_line_xdyd::xd
byte bitmap_line_xdyd::xd#0 xd zp[1]:9 100001.0
byte bitmap_line_xdyd::xd#1 xd zp[1]:9 100001.0
byte bitmap_line_xdyd::xd#5 xd zp[1]:9 1.4287142885714287E8
byte bitmap_line_xdyd::y
byte bitmap_line_xdyd::y#0 y zp[1]:4 50000.5
byte bitmap_line_xdyd::y#1 y zp[1]:4 50000.5
byte bitmap_line_xdyd::y#2 y zp[1]:4 1.000000001E9
byte bitmap_line_xdyd::y#3 y zp[1]:4 5.715714292857143E8
byte bitmap_line_xdyd::y#5 y zp[1]:4 600001.5
byte bitmap_line_xdyd::y#6 y zp[1]:4 1.000000001E9
byte bitmap_line_xdyd::yd
byte bitmap_line_xdyd::yd#0 yd zp[1]:6 200002.0
byte bitmap_line_xdyd::yd#1 yd zp[1]:6 200002.0
byte bitmap_line_xdyd::yd#2 yd zp[1]:6 7.1514286E7
void bitmap_line_xdyi(byte bitmap_line_xdyi::x , byte bitmap_line_xdyi::y , byte bitmap_line_xdyi::x1 , byte bitmap_line_xdyi::xd , byte bitmap_line_xdyi::yd)
byte~ bitmap_line_xdyi::$6 zp[1]:10 2.000000002E9
byte bitmap_line_xdyi::e
byte bitmap_line_xdyi::e#0 e zp[1]:6 2000002.0
byte bitmap_line_xdyi::e#1 e zp[1]:6 1.3333333346666667E9
byte bitmap_line_xdyi::e#2 e zp[1]:6 2.000000002E9
byte bitmap_line_xdyi::e#3 e zp[1]:6 4.0020000059999996E8
byte bitmap_line_xdyi::e#6 e zp[1]:6 1.000000001E9
byte bitmap_line_xdyi::x
byte bitmap_line_xdyi::x#0 reg byte x 40000.4
byte bitmap_line_xdyi::x#1 reg byte x 40000.4
byte bitmap_line_xdyi::x#2 reg byte x 3.75000000375E8
byte bitmap_line_xdyi::x#3 reg byte x 7.50250001E8
byte bitmap_line_xdyi::x#6 reg byte x 600001.5
byte bitmap_line_xdyi::x1
byte bitmap_line_xdyi::x1#0 x1 zp[1]:5 66667.33333333333
byte bitmap_line_xdyi::x1#1 x1 zp[1]:5 66667.33333333333
byte bitmap_line_xdyi::x1#6 x1 zp[1]:5 7.144285735714285E7
byte bitmap_line_xdyi::xd
byte bitmap_line_xdyi::xd#0 xd zp[1]:9 100001.0
byte bitmap_line_xdyi::xd#1 xd zp[1]:9 100001.0
byte bitmap_line_xdyi::xd#5 xd zp[1]:9 1.4287142885714287E8
byte bitmap_line_xdyi::y
byte bitmap_line_xdyi::y#0 y zp[1]:4 50000.5
byte bitmap_line_xdyi::y#1 y zp[1]:4 50000.5
byte bitmap_line_xdyi::y#2 y zp[1]:4 1.000000001E9
byte bitmap_line_xdyi::y#3 y zp[1]:4 5.715714292857143E8
byte bitmap_line_xdyi::y#5 y zp[1]:4 600001.5
byte bitmap_line_xdyi::y#6 y zp[1]:4 1.000000001E9
byte bitmap_line_xdyi::yd
byte bitmap_line_xdyi::yd#0 yd zp[1]:3 200002.0
byte bitmap_line_xdyi::yd#1 yd zp[1]:3 200002.0
byte bitmap_line_xdyi::yd#2 yd zp[1]:3 7.1514286E7
void bitmap_line_ydxd(byte bitmap_line_ydxd::y , byte bitmap_line_ydxd::x , byte bitmap_line_ydxd::y1 , byte bitmap_line_ydxd::yd , byte bitmap_line_ydxd::xd)
byte~ bitmap_line_ydxd::$6 reg byte y 2.000000002E9
byte bitmap_line_ydxd::e
byte bitmap_line_ydxd::e#0 e zp[1]:7 2000002.0
byte bitmap_line_ydxd::e#1 e zp[1]:7 1.3333333346666667E9
byte bitmap_line_ydxd::e#2 e zp[1]:7 2.000000002E9
byte bitmap_line_ydxd::e#3 e zp[1]:7 4.0020000059999996E8
byte bitmap_line_ydxd::e#6 e zp[1]:7 1.000000001E9
byte bitmap_line_ydxd::x
byte bitmap_line_ydxd::x#0 reg byte x 50000.5
byte bitmap_line_ydxd::x#1 reg byte x 50000.5
byte bitmap_line_ydxd::x#2 reg byte x 1.000000001E9
byte bitmap_line_ydxd::x#3 reg byte x 5.715714292857143E8
byte bitmap_line_ydxd::x#5 reg byte x 600001.5
byte bitmap_line_ydxd::x#6 reg byte x 1.000000001E9
byte bitmap_line_ydxd::xd
byte bitmap_line_ydxd::xd#0 xd zp[1]:9 200002.0
byte bitmap_line_ydxd::xd#1 xd zp[1]:9 200002.0
byte bitmap_line_ydxd::xd#2 xd zp[1]:9 7.1514286E7
byte bitmap_line_ydxd::y
byte bitmap_line_ydxd::y#0 y zp[1]:8 40000.4
byte bitmap_line_ydxd::y#1 y zp[1]:8 40000.4
byte bitmap_line_ydxd::y#2 y zp[1]:8 7.50250001E8
byte bitmap_line_ydxd::y#3 y zp[1]:8 3.75000000375E8
byte bitmap_line_ydxd::y#7 y zp[1]:8 600001.5
byte bitmap_line_ydxd::y1
byte bitmap_line_ydxd::y1#0 y1 zp[1]:4 66667.33333333333
byte bitmap_line_ydxd::y1#1 y1 zp[1]:4 66667.33333333333
byte bitmap_line_ydxd::y1#6 y1 zp[1]:4 7.144285735714285E7
byte bitmap_line_ydxd::yd
byte bitmap_line_ydxd::yd#0 yd zp[1]:6 100001.0
byte bitmap_line_ydxd::yd#1 yd zp[1]:6 100001.0
byte bitmap_line_ydxd::yd#5 yd zp[1]:6 1.4287142885714287E8
void bitmap_line_ydxi(byte bitmap_line_ydxi::y , byte bitmap_line_ydxi::x , byte bitmap_line_ydxi::y1 , byte bitmap_line_ydxi::yd , byte bitmap_line_ydxi::xd)
byte~ bitmap_line_ydxi::$6 reg byte y 2.000000002E9
byte bitmap_line_ydxi::e
byte bitmap_line_ydxi::e#0 e zp[1]:5 2000002.0
byte bitmap_line_ydxi::e#1 e zp[1]:5 1.3333333346666667E9
byte bitmap_line_ydxi::e#2 e zp[1]:5 2.000000002E9
byte bitmap_line_ydxi::e#3 e zp[1]:5 4.0020000059999996E8
byte bitmap_line_ydxi::e#6 e zp[1]:5 1.000000001E9
byte bitmap_line_ydxi::x
byte bitmap_line_ydxi::x#0 reg byte x 50000.5
byte bitmap_line_ydxi::x#1 reg byte x 50000.5
byte bitmap_line_ydxi::x#2 reg byte x 1.000000001E9
byte bitmap_line_ydxi::x#3 reg byte x 5.715714292857143E8
byte bitmap_line_ydxi::x#5 reg byte x 600001.5
byte bitmap_line_ydxi::x#6 reg byte x 1.000000001E9
byte bitmap_line_ydxi::xd
byte bitmap_line_ydxi::xd#0 xd zp[1]:9 200002.0
byte bitmap_line_ydxi::xd#1 xd zp[1]:9 200002.0
byte bitmap_line_ydxi::xd#2 xd zp[1]:9 7.1514286E7
byte bitmap_line_ydxi::y
byte bitmap_line_ydxi::y#0 y zp[1]:6 40000.4
byte bitmap_line_ydxi::y#1 y zp[1]:6 40000.4
byte bitmap_line_ydxi::y#2 y zp[1]:6 3.75000000375E8
byte bitmap_line_ydxi::y#3 y zp[1]:6 7.50250001E8
byte bitmap_line_ydxi::y#6 y zp[1]:6 600001.5
byte bitmap_line_ydxi::y1
byte bitmap_line_ydxi::y1#0 y1 zp[1]:4 66667.33333333333
byte bitmap_line_ydxi::y1#1 y1 zp[1]:4 66667.33333333333
byte bitmap_line_ydxi::y1#6 y1 zp[1]:4 7.144285735714285E7
byte bitmap_line_ydxi::yd
byte bitmap_line_ydxi::yd#0 yd zp[1]:3 100001.0
byte bitmap_line_ydxi::yd#1 yd zp[1]:3 100001.0
byte bitmap_line_ydxi::yd#5 yd zp[1]:3 1.4287142885714287E8
void bitmap_plot(byte bitmap_plot::x , byte bitmap_plot::y)
byte~ bitmap_plot::$1 reg byte a 2.0000000002E10
byte* bitmap_init::yoffs#1 yoffs zp[2]:2 202.0
byte* bitmap_init::yoffs#2 yoffs zp[2]:2 63.125
byte* bitmap_init::yoffs#4 yoffs zp[2]:2 101.0
void bitmap_line(word bitmap_line::x1 , word bitmap_line::y1 , word bitmap_line::x2 , word bitmap_line::y2)
word bitmap_line::dx
word bitmap_line::dx#0 dx zp[2]:19 7510000.175000001
word bitmap_line::dy
word bitmap_line::dy#0 dy zp[2]:10 8344444.63888889
word bitmap_line::e
word bitmap_line::e#0 e zp[2]:2 200002.0
word bitmap_line::e#1 e zp[2]:2 1.3333333466666667E8
word bitmap_line::e#2 e zp[2]:2 2.00000002E8
word bitmap_line::e#3 e zp[2]:2 4.0020000599999994E7
word bitmap_line::e#6 e zp[2]:2 1.500000015E8
word bitmap_line::e1
word bitmap_line::e1#0 e1 zp[2]:8 200002.0
word bitmap_line::e1#1 e1 zp[2]:8 1.3333333466666667E8
word bitmap_line::e1#2 e1 zp[2]:8 2.00000002E8
word bitmap_line::e1#3 e1 zp[2]:8 4.0020000599999994E7
word bitmap_line::e1#6 e1 zp[2]:8 1.500000015E8
word bitmap_line::sx
word bitmap_line::sx#0 sx zp[2]:21 6670000.1
word bitmap_line::sy
word bitmap_line::sy#0 sy zp[2]:12 7696153.961538462
word bitmap_line::x
word bitmap_line::x#1 x zp[2]:4 1.00000001E8
word bitmap_line::x#12 x zp[2]:4 2.00000002E8
word bitmap_line::x#13 x zp[2]:4 5.715714357142858E7
word bitmap_line::x#15 x zp[2]:4 5.714285771428572E7
word bitmap_line::x#6 x zp[2]:4 2.00100003E8
word bitmap_line::x#7 x zp[2]:4 7.5025001E7
word bitmap_line::x1
word bitmap_line::x1#0 x1 zp[2]:4 20400.24
word bitmap_line::x2
word bitmap_line::x2#0 x2 zp[2]:15 3036666.7878787876
word bitmap_line::y
word bitmap_line::y#1 y zp[2]:6 5.714285771428572E7
word bitmap_line::y#13 y zp[2]:6 2.00000002E8
word bitmap_line::y#15 y zp[2]:6 4.287142914285715E7
word bitmap_line::y#2 y zp[2]:6 1.00000001E8
word bitmap_line::y#4 y zp[2]:6 5.002500075E7
word bitmap_line::y#7 y zp[2]:6 1.00000001E8
word bitmap_line::y1
word bitmap_line::y1#0 y1 zp[2]:6 16400.2
word bitmap_line::y2
word bitmap_line::y2#0 y2 zp[2]:17 3131562.625
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 zp[2]:25 2.000000002E9
byte~ bitmap_plot::$1 reg byte x 2.000000002E9
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 plotter zp[2]:11 5.0000000005E9
word bitmap_plot::plotter_x
word bitmap_plot::plotter_x#0 plotter_x zp[2]:11 1.0000000001E10
word bitmap_plot::plotter_y
word bitmap_plot::plotter_y#0 plotter_y zp[2]:13 2.0000000002E10
byte bitmap_plot::x
byte bitmap_plot::x#0 reg byte x 1.000000001E9
byte bitmap_plot::x#1 reg byte x 1.000000001E9
byte bitmap_plot::x#2 reg byte x 1.000000001E9
byte bitmap_plot::x#3 reg byte x 1.000000001E9
byte bitmap_plot::x#4 reg byte x 8.50000000175E9
word bitmap_plot::plotter#0 plotter zp[2]:23 5.000000005E8
byte* bitmap_plot::plotter#1 plotter zp[2]:23 1.5000000015E9
word bitmap_plot::x
word bitmap_plot::x#0 x zp[2]:4 100001.0
word bitmap_plot::x#1 x zp[2]:4 1.00000001E8
word bitmap_plot::x#2 x zp[2]:4 100001.0
word bitmap_plot::x#3 x zp[2]:4 1.00000001E8
word bitmap_plot::x#4 x zp[2]:4 5.500500015E8
byte bitmap_plot::y
byte bitmap_plot::y#0 reg byte y 2.000000002E9
byte bitmap_plot::y#1 reg byte y 2.000000002E9
byte bitmap_plot::y#2 reg byte y 2.000000002E9
byte bitmap_plot::y#3 reg byte y 2.000000002E9
byte bitmap_plot::y#4 reg byte y 1.2000000003E10
byte bitmap_plot::y#0 reg byte a 200002.0
byte bitmap_plot::y#1 reg byte a 2.00000002E8
byte bitmap_plot::y#2 reg byte a 200002.0
byte bitmap_plot::y#3 reg byte a 2.00000002E8
byte bitmap_plot::y#4 reg byte a 2.200200006E9
const to_nomodify byte* bitmap_plot_bit[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_xhi[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_xlo[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_yhi[$100] = { fill( $100, 0) }
const to_nomodify byte* bitmap_plot_ylo[$100] = { fill( $100, 0) }
byte* bitmap_screen
void init_screen()
byte* init_screen::c
byte* init_screen::c#1 c zp[2]:11 202.0
byte* init_screen::c#2 c zp[2]:11 134.66666666666666
byte* init_screen::c#1 c zp[2]:2 202.0
byte* init_screen::c#2 c zp[2]:2 134.66666666666666
void lines()
byte lines::l
byte lines::l#1 l zp[1]:2 20002.0
byte lines::l#2 l zp[1]:2 10001.000000000002
const byte lines_cnt = 8
const byte* lines_x[] = { $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c }
const byte* lines_y[] = { $a, $28, $3c, $50, $6e, $50, $3c, $28, $a }
byte lines::l#1 l zp[1]:14 20002.0
byte lines::l#2 l zp[1]:14 10001.000000000002
const byte* lines_x[LINES+1] = { $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c }
const byte* lines_y[LINES+1] = { $a, $28, $3c, $50, $6e, $50, $3c, $28, $a }
void main()
void* memset(void* memset::str , byte memset::c , word memset::num)
byte memset::c
byte memset::c#4 reg byte x 125.125
byte* memset::dst
byte* memset::dst#1 dst zp[2]:4 2002.0
byte* memset::dst#2 dst zp[2]:4 1368.3333333333335
byte* memset::dst#4 dst zp[2]:4 202.0
byte* memset::end
byte* memset::end#0 end zp[2]:2 183.66666666666669
word memset::num
word memset::num#2 num zp[2]:2 101.0
void* memset::return
void* memset::str
void* memset::str#3 str zp[2]:4
word sgn_u16(word sgn_u16::w)
byte~ sgn_u16::$0 reg byte a 2000002.0
byte~ sgn_u16::$1 reg byte a 2000002.0
word sgn_u16::return
word sgn_u16::return#0 return zp[2]:12 200002.0
word sgn_u16::return#1 return zp[2]:12 200002.0
word sgn_u16::return#4 return zp[2]:12 50000.5
word sgn_u16::w
word sgn_u16::w#0 w zp[2]:23 200002.0
word sgn_u16::w#1 w zp[2]:23 200002.0
word sgn_u16::w#2 w zp[2]:23 1200003.0
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
zp[1]:2 [ lines::l#2 lines::l#1 bitmap_clear::y#4 bitmap_clear::y#1 ]
zp[1]:3 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line::yd#2 bitmap_line::yd#11 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
zp[1]:4 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y0#0 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ]
zp[1]:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
reg byte x [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ]
zp[1]:6 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ]
reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ]
zp[1]:7 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line::x1#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
reg byte x [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ]
zp[1]:8 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ]
reg byte a [ bitmap_init::$0 ]
zp[1]:9 [ bitmap_init::$10 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ]
reg byte a [ bitmap_init::$7 ]
reg byte a [ bitmap_init::$8 ]
reg byte a [ bitmap_init::$9 ]
reg byte y [ bitmap_line::y1#0 ]
reg byte y [ bitmap_line_ydxi::$6 ]
reg byte y [ bitmap_line_ydxd::$6 ]
zp[1]:10 [ bitmap_line_xdyd::$6 bitmap_line_xdyi::$6 ]
zp[2]:11 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 init_screen::c#2 init_screen::c#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
zp[2]:13 [ bitmap_plot::plotter_y#0 ]
reg byte a [ bitmap_plot::$1 ]
reg byte x [ memset::c#4 ]
zp[2]:2 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 memset::num#2 memset::end#0 init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
zp[2]:4 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
zp[2]:8 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
zp[2]:10 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
zp[2]:12 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
reg byte a [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ]
zp[1]:14 [ bitmap_init::$7 lines::l#2 lines::l#1 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]
zp[2]:15 [ bitmap_line::x2#0 ]
zp[2]:17 [ bitmap_line::y2#0 ]
zp[2]:19 [ bitmap_line::dx#0 ]
zp[2]:21 [ bitmap_line::sx#0 ]
reg byte a [ abs_u16::$0 ]
reg byte a [ abs_u16::$1 ]
reg byte a [ sgn_u16::$0 ]
reg byte a [ sgn_u16::$1 ]
zp[2]:23 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
zp[2]:25 [ bitmap_plot::$0 ]
reg byte x [ bitmap_plot::$1 ]