1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-26 19:30:00 +00:00

Merged FlightControl/CX16_VERA Commander X16 veralib updates and space demo.

This commit is contained in:
jespergravgaard 2021-02-02 01:37:05 +01:00
parent 41bb71511c
commit 4993a2cb4b
9 changed files with 1325 additions and 1305 deletions

View File

@ -43,13 +43,6 @@ char * const DEFAULT_SCREEN = 0x0000;
// VRAM Bank (0/1) of the default screen
char * const DEFAULT_SCREEN_VBANK = 0;
// Load a file to memory
// Returns a status:
// - 0xff: Success
// - other: Kernal Error Code (https://commodore.ca/manuals/pdfs/commodore_error_messages.pdf)
char LoadFileBanked( char device, char* filename, dword address);
// Put a single byte into VRAM.
// Uses VERA DATA0
// - vbank: Which 64K VRAM bank to put data into (0/1)
@ -72,12 +65,13 @@ char vpeek(char vbank, char* vaddr);
// - num: The number of bytes to copy
void memcpy_to_vram(char vbank, void* vdest, void* src, unsigned int num );
// Copy block of banked internal memory (256 banks at A000-BFFF) to VERA VRAM.
// Copy block of memory (from banked RAM to VRAM)
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination in VRAM.
// - vdest: dword of the destination address in VRAM
// - src: dword of source banked address in RAM. This address is a linair project of the banked memory of 512K to 2048K.
// - vdest: absolute address in VRAM
// - src: absolute address in the banked RAM of the CX16.
// - num: dword of the number of bytes to copy
void bnkcpy_vram_address(dword vdest, dword src, dword num );
// Note: This function can switch RAM bank during copying to copy data from multiple RAM banks.
void memcpy_bank_to_vram(unsigned long vdest, unsigned long src, unsigned long num );
// Copy block of memory (from VRAM to VRAM)
// Copies the values from the location pointed by src to the location pointed by dest.
@ -106,3 +100,11 @@ void memset_vram(char vbank, void* vdest, char data, unsigned long num );
// - data: The value to set the vram with.
// - num: The number of bytes to set
void memset_vram_word(char vbank, void* vdest, unsigned int data, unsigned long num );
// Load a file into one of the 256 8KB RAM banks.
// - device: The device to load from
// - filename: The file name
// - address: The absolute address in banked memory to load the file too
// - returns: 0xff: Success, other: Kernal Error Code (https://commodore.ca/manuals/pdfs/commodore_error_messages.pdf)
// Note: This function only works if the entire file fits within the selected bank. The function cannot load to multiple banks.
char load_to_bank( char device, char* filename, unsigned long address);

View File

@ -4,21 +4,6 @@
#include <cx16.h>
#include <cx16-kernal.h>
#include <peekpoke.h>
// Load a file to memory
// Returns a status:
// - 0xff: Success
// - other: Kernal Error Code (https://commodore.ca/manuals/pdfs/commodore_error_messages.pdf)
char LoadFileBanked( char device, char* filename, dword address) {
setnam(filename);
setlfs(device);
char bank = (byte)(((((word)<(>address)<<8)|>(<address))>>5)+((word)<(>address)<<3));
char* addr = ((<address)&0x1FFF); // stip off the top 3 bits, which are representing the bank of the word!
addr += 0xA000;
VIA1->PORT_A = (char)bank; // select the bank
return load(addr, 0);
}
// Put a single byte into VRAM.
// Uses VERA DATA0
@ -71,12 +56,13 @@ void memcpy_to_vram(char vbank, void* vdest, void* src, unsigned int num ) {
*VERA_DATA0 = *s;
}
// Copy block of banked internal memory (256 banks at A000-BFFF) to VERA VRAM.
// Copy block of memory (from banked RAM to VRAM)
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination in VRAM.
// - vdest: dword of the destination address in VRAM
// - src: dword of source banked address in RAM. This address is a linair project of the banked memory of 512K to 2048K.
// - vdest: absolute address in VRAM
// - src: absolute address in the banked RAM of the CX16.
// - num: dword of the number of bytes to copy
void bnkcpy_vram_address(dword vdest, dword src, dword num ) {
// Note: This function can switch RAM bank during copying to copy data from multiple RAM banks.
void memcpy_bank_to_vram(unsigned long vdest, unsigned long src, unsigned long num ) {
// Select DATA0
*VERA_CTRL &= ~VERA_ADDRSEL;
// Set address
@ -85,18 +71,17 @@ void bnkcpy_vram_address(dword vdest, dword src, dword num ) {
*VERA_ADDRX_H = <(>vdest);
*VERA_ADDRX_H |= VERA_INC_1;
dword beg = src;
dword end = src+num;
unsigned long beg = src;
unsigned long end = src+num;
char bank = (byte)(((((word)<(>beg)<<8)|>(<beg))>>5)+((word)<(>beg)<<3));
char* addr = ((<beg)&0x1FFF); // stip off the top 3 bits, which are representing the bank of the word!
addr += 0xA000;
POKE(0x9f61, (byte)bank); // select the bank
for(dword pos=beg; pos<end; pos++) {
VIA1->PORT_A = (char)bank; // select the bank
for(unsigned long pos=beg; pos<end; pos++) {
if(addr == 0xC000) {
POKE(0x9f61, (byte)++bank); // select the bank
VIA1->PORT_A = (char)++bank; // select the bank
addr = 0xA000;
}
*VERA_DATA0 = *addr;
@ -173,3 +158,18 @@ void memcpy_in_vram(char dest_bank, void *dest, char dest_increment, char src_ba
}
}
// Load a file into one of the 256 8KB RAM banks.
// - device: The device to load from
// - filename: The file name
// - address: The absolute address in banked memory to load the file too
// - returns: 0xff: Success, other: Kernal Error Code (https://commodore.ca/manuals/pdfs/commodore_error_messages.pdf)
// Note: This function only works if the entire file fits within the selected bank. The function cannot load to multiple banks.
char load_to_bank( char device, char* filename, dword address) {
setnam(filename);
setlfs(device);
char bank = (byte)(((((word)<(>address)<<8)|>(<address))>>5)+((word)<(>address)<<3));
char* addr = ((<address)&0x1FFF); // stip off the top 3 bits, which are representing the bank of the word!
addr += 0xA000;
VIA1->PORT_A = (char)bank; // select the bank
return load(addr, 0);
}

View File

@ -482,6 +482,11 @@ public class TestPrograms {
compileAndCompare("examples/cx16/cx16-bankaddressing.c");
}
//@Test
//public void testCx16SpaceDemo() throws IOException, URISyntaxException {
// compileAndCompare("examples/cx16/spacedemo/spacedemo.c");
//}
@Test
public void testCx16LoadFileInBank() throws IOException, URISyntaxException {
compileAndCompare("examples/cx16/cx16-bankload.c");

View File

@ -79,15 +79,17 @@ void main() {
clrscr();
printf("\n\nsprite banked file load and display demo.\n");
const dword BANK_SPRITE = 0x12000; // Load in bank 9.
const dword VRAM_SPRITE = 0x10000; // Load in bank 9.
// RAM Bank where sprite is loaded
const dword BANK_SPRITE = 0x12000;
// VRAM address of sprite
const dword VRAM_SPRITE = 0x10000;
// Sprite attributes: 8bpp, in front, 64x64, address SPRITE_PIXELS_VRAM
struct VERA_SPRITE SPRITE_ATTR = { <(VRAM_SPRITE/32)|VERA_SPRITE_8BPP, 320-32, 240-32, 0x0c, 0xf1 };
char status = LoadFileBanked(8, "SPRITE", BANK_SPRITE );
char status = load_to_bank(8, "SPRITE", BANK_SPRITE );
bnkcpy_vram_address(VERA_PALETTE+32, BANK_SPRITE-2, 32);
bnkcpy_vram_address(VRAM_SPRITE, BANK_SPRITE+32-2, 64*32);
memcpy_bank_to_vram(VERA_PALETTE+32, BANK_SPRITE-2, 32);
memcpy_bank_to_vram(VRAM_SPRITE, BANK_SPRITE+32-2, 64*32);
SPRITE_ATTR.ADDR = <(VRAM_SPRITE/32)|VERA_SPRITE_4BPP;
SPRITE_ATTR.X = 100;

View File

@ -9,6 +9,7 @@
#include <cx16-kernal.h>
#include <cx16-veralib.h>
#include <6502.h>
#include <peekpoke.h>
#include <conio.h>
#include <printf.h>
#include <stdio.h>
@ -251,20 +252,20 @@ void main() {
clrscr();
// Loading the graphics in main banked memory.
char status = LoadFileBanked(8, "SPRITES", BANK_SPRITES);
status = LoadFileBanked(8, "TILES", BANK_TILES_SMALL);
status = LoadFileBanked(8, "TILEB", BANK_TILES_LARGE);
char status = load_to_bank(8, "SPRITES", BANK_SPRITES);
status = load_to_bank(8, "TILES", BANK_TILES_SMALL);
status = load_to_bank(8, "TILEB", BANK_TILES_LARGE);
// Load the palette in main banked memory.
status = LoadFileBanked(8, "PALETTES", BANK_PALETTE);
status = load_to_bank(8, "PALETTES", BANK_PALETTE);
// Copy graphics to the VERA VRAM.
bnkcpy_vram_address(VRAM_SPRITES, BANK_SPRITES-2, (dword)64*64*NUM_SPRITES/2);
bnkcpy_vram_address(VRAM_TILES_SMALL, BANK_TILES_SMALL-2, (dword)32*32*(NUM_TILES_SMALL)/2);
bnkcpy_vram_address(VRAM_TILES_LARGE, BANK_TILES_LARGE-2, (dword)64*64*(NUM_TILES_LARGE)/2);
memcpy_bank_to_vram(VRAM_SPRITES, BANK_SPRITES-2, (dword)64*64*NUM_SPRITES/2);
memcpy_bank_to_vram(VRAM_TILES_SMALL, BANK_TILES_SMALL-2, (dword)32*32*(NUM_TILES_SMALL)/2);
memcpy_bank_to_vram(VRAM_TILES_LARGE, BANK_TILES_LARGE-2, (dword)64*64*(NUM_TILES_LARGE)/2);
// Load the palette in VERA palette registers, but keep the first 16 colors untouched.
bnkcpy_vram_address(VERA_PALETTE+32, BANK_PALETTE-2, (dword)32*3);
memcpy_bank_to_vram(VERA_PALETTE+32, BANK_PALETTE-2, (dword)32*3);
// Now we activate the tile mode.
vera_layer_mode_tile(0, (dword)0x10000, VRAM_TILES_SMALL, 128, 64, 16, 16, 4);

View File

@ -187,8 +187,9 @@ conio_x16_init: {
rts
}
main: {
// RAM Bank where sprite is loaded
.label BANK_SPRITE = $12000
// Load in bank 9.
// VRAM address of sprite
.label VRAM_SPRITE = $10000
.label SPRITE_ATTR = $43
// vera_layer_set_text_color_mode( 1, VERA_LAYER_CONFIG_16C )
@ -207,58 +208,58 @@ main: {
sta SPRITE_ATTR-1,y
dey
bne !-
// LoadFileBanked(8, "SPRITE", BANK_SPRITE )
jsr LoadFileBanked
// bnkcpy_vram_address(VERA_PALETTE+32, BANK_SPRITE-2, 32)
// load_to_bank(8, "SPRITE", BANK_SPRITE )
jsr load_to_bank
// memcpy_bank_to_vram(VERA_PALETTE+32, BANK_SPRITE-2, 32)
lda #$20
sta.z bnkcpy_vram_address.num
sta.z memcpy_bank_to_vram.num
lda #0
sta.z bnkcpy_vram_address.num+1
sta.z bnkcpy_vram_address.num+2
sta.z bnkcpy_vram_address.num+3
sta.z memcpy_bank_to_vram.num+1
sta.z memcpy_bank_to_vram.num+2
sta.z memcpy_bank_to_vram.num+3
lda #<BANK_SPRITE-2
sta.z bnkcpy_vram_address.beg
sta.z memcpy_bank_to_vram.beg
lda #>BANK_SPRITE-2
sta.z bnkcpy_vram_address.beg+1
sta.z memcpy_bank_to_vram.beg+1
lda #<BANK_SPRITE-2>>$10
sta.z bnkcpy_vram_address.beg+2
sta.z memcpy_bank_to_vram.beg+2
lda #>BANK_SPRITE-2>>$10
sta.z bnkcpy_vram_address.beg+3
sta.z memcpy_bank_to_vram.beg+3
lda #<VERA_PALETTE+$20
sta.z bnkcpy_vram_address.vdest
sta.z memcpy_bank_to_vram.vdest
lda #>VERA_PALETTE+$20
sta.z bnkcpy_vram_address.vdest+1
sta.z memcpy_bank_to_vram.vdest+1
lda #<VERA_PALETTE+$20>>$10
sta.z bnkcpy_vram_address.vdest+2
sta.z memcpy_bank_to_vram.vdest+2
lda #>VERA_PALETTE+$20>>$10
sta.z bnkcpy_vram_address.vdest+3
jsr bnkcpy_vram_address
// bnkcpy_vram_address(VRAM_SPRITE, BANK_SPRITE+32-2, 64*32)
sta.z memcpy_bank_to_vram.vdest+3
jsr memcpy_bank_to_vram
// memcpy_bank_to_vram(VRAM_SPRITE, BANK_SPRITE+32-2, 64*32)
lda #<$40*$20
sta.z bnkcpy_vram_address.num
sta.z memcpy_bank_to_vram.num
lda #>$40*$20
sta.z bnkcpy_vram_address.num+1
sta.z memcpy_bank_to_vram.num+1
lda #<$40*$20>>$10
sta.z bnkcpy_vram_address.num+2
sta.z memcpy_bank_to_vram.num+2
lda #>$40*$20>>$10
sta.z bnkcpy_vram_address.num+3
sta.z memcpy_bank_to_vram.num+3
lda #<BANK_SPRITE+$20-2
sta.z bnkcpy_vram_address.beg
sta.z memcpy_bank_to_vram.beg
lda #>BANK_SPRITE+$20-2
sta.z bnkcpy_vram_address.beg+1
sta.z memcpy_bank_to_vram.beg+1
lda #<BANK_SPRITE+$20-2>>$10
sta.z bnkcpy_vram_address.beg+2
sta.z memcpy_bank_to_vram.beg+2
lda #>BANK_SPRITE+$20-2>>$10
sta.z bnkcpy_vram_address.beg+3
sta.z memcpy_bank_to_vram.beg+3
lda #<VRAM_SPRITE
sta.z bnkcpy_vram_address.vdest
sta.z memcpy_bank_to_vram.vdest
lda #>VRAM_SPRITE
sta.z bnkcpy_vram_address.vdest+1
sta.z memcpy_bank_to_vram.vdest+1
lda #<VRAM_SPRITE>>$10
sta.z bnkcpy_vram_address.vdest+2
sta.z memcpy_bank_to_vram.vdest+2
lda #>VRAM_SPRITE>>$10
sta.z bnkcpy_vram_address.vdest+3
jsr bnkcpy_vram_address
sta.z memcpy_bank_to_vram.vdest+3
jsr memcpy_bank_to_vram
// SPRITE_ATTR.ADDR = <(VRAM_SPRITE/32)|VERA_SPRITE_4BPP
lda #<VRAM_SPRITE/$20&$ffff
sta.z SPRITE_ATTR
@ -708,11 +709,13 @@ cputs: {
jsr cputc
jmp __b1
}
// Load a file to memory
// Returns a status:
// - 0xff: Success
// - other: Kernal Error Code (https://commodore.ca/manuals/pdfs/commodore_error_messages.pdf)
LoadFileBanked: {
// Load a file into one of the 256 8KB RAM banks.
// - device: The device to load from
// - filename: The file name
// - address: The absolute address in banked memory to load the file too
// - returns: 0xff: Success, other: Kernal Error Code (https://commodore.ca/manuals/pdfs/commodore_error_messages.pdf)
// Note: This function only works if the entire file fits within the selected bank. The function cannot load to multiple banks.
load_to_bank: {
.const device = 8
.const bank = ((>((main.BANK_SPRITE&$ffff)))>>5)+(<((main.BANK_SPRITE>>$10)<<3))
// setnam(filename)
@ -739,13 +742,14 @@ LoadFileBanked: {
// }
rts
}
// Copy block of banked internal memory (256 banks at A000-BFFF) to VERA VRAM.
// Copy block of memory (from banked RAM to VRAM)
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination in VRAM.
// - vdest: dword of the destination address in VRAM
// - src: dword of source banked address in RAM. This address is a linair project of the banked memory of 512K to 2048K.
// - vdest: absolute address in VRAM
// - src: absolute address in the banked RAM of the CX16.
// - num: dword of the number of bytes to copy
// bnkcpy_vram_address(dword zp(3) vdest, dword zp(7) num)
bnkcpy_vram_address: {
// Note: This function can switch RAM bank during copying to copy data from multiple RAM banks.
// memcpy_bank_to_vram(dword zp(3) vdest, dword zp(7) num)
memcpy_bank_to_vram: {
.label __0 = $2b
.label __2 = $2d
.label __4 = $35
@ -903,11 +907,11 @@ bnkcpy_vram_address: {
lda.z addr+1
adc #>$a000
sta.z addr+1
// POKE
stx $9f61
// VIA1->PORT_A = (char)bank
stx VIA1+OFFSET_STRUCT_MOS6522_VIA_PORT_A
__b1:
// select the bank
// for(dword pos=beg; pos<end; pos++)
// for(unsigned long pos=beg; pos<end; pos++)
lda.z pos+3
cmp.z end+3
bcc __b2
@ -934,10 +938,10 @@ bnkcpy_vram_address: {
lda.z addr
cmp #<$c000
bne __b3
// POKE(0x9f61, (byte)++bank);
// VIA1->PORT_A = (char)++bank;
inx
// POKE
stx $9f61
// VIA1->PORT_A = (char)++bank
stx VIA1+OFFSET_STRUCT_MOS6522_VIA_PORT_A
lda #<$a000
sta.z addr
lda #>$a000
@ -952,7 +956,7 @@ bnkcpy_vram_address: {
bne !+
inc.z addr+1
!:
// for(dword pos=beg; pos<end; pos++)
// for(unsigned long pos=beg; pos<end; pos++)
inc.z pos
bne !+
inc.z pos+1

View File

@ -84,15 +84,15 @@ main::@3: scope:[main] from main::@2
to:main::@4
main::@4: scope:[main] from main::@3
[40] *(&main::SPRITE_ATTR) = memcpy(*(&$0), struct VERA_SPRITE, SIZEOF_STRUCT_VERA_SPRITE)
[41] call LoadFileBanked
[41] call load_to_bank
to:main::@5
main::@5: scope:[main] from main::@4
[42] phi()
[43] call bnkcpy_vram_address
[43] call memcpy_bank_to_vram
to:main::@6
main::@6: scope:[main] from main::@5
[44] phi()
[45] call bnkcpy_vram_address
[45] call memcpy_bank_to_vram
to:main::@7
main::@7: scope:[main] from main::@6
[46] *((word*)&main::SPRITE_ATTR) = <main::VRAM_SPRITE/$20
@ -340,84 +340,84 @@ cputs::@2: scope:[cputs] from cputs::@1
[172] call cputc
to:cputs::@1
byte LoadFileBanked(byte LoadFileBanked::device , byte* LoadFileBanked::filename , dword LoadFileBanked::address)
LoadFileBanked: scope:[LoadFileBanked] from main::@4
byte load_to_bank(byte load_to_bank::device , byte* load_to_bank::filename , dword load_to_bank::address)
load_to_bank: scope:[load_to_bank] from main::@4
[173] setnam::filename = main::filename
[174] call setnam
to:LoadFileBanked::@1
LoadFileBanked::@1: scope:[LoadFileBanked] from LoadFileBanked
[175] setlfs::device = LoadFileBanked::device#0
to:load_to_bank::@1
load_to_bank::@1: scope:[load_to_bank] from load_to_bank
[175] setlfs::device = load_to_bank::device#0
[176] call setlfs
to:LoadFileBanked::@2
LoadFileBanked::@2: scope:[LoadFileBanked] from LoadFileBanked::@1
[177] *((byte*)VIA1+OFFSET_STRUCT_MOS6522_VIA_PORT_A) = LoadFileBanked::bank#0
to:load_to_bank::@2
load_to_bank::@2: scope:[load_to_bank] from load_to_bank::@1
[177] *((byte*)VIA1+OFFSET_STRUCT_MOS6522_VIA_PORT_A) = load_to_bank::bank#0
[178] load::address = (byte*)0+$a000
[179] load::verify = 0
[180] call load
to:LoadFileBanked::@return
LoadFileBanked::@return: scope:[LoadFileBanked] from LoadFileBanked::@2
to:load_to_bank::@return
load_to_bank::@return: scope:[load_to_bank] from load_to_bank::@2
[181] return
to:@return
void bnkcpy_vram_address(dword bnkcpy_vram_address::vdest , dword bnkcpy_vram_address::src , dword bnkcpy_vram_address::num)
bnkcpy_vram_address: scope:[bnkcpy_vram_address] from main::@5 main::@6
[182] bnkcpy_vram_address::num#2 = phi( main::@5/$20, main::@6/(word)$40*$20 )
[182] bnkcpy_vram_address::beg#0 = phi( main::@5/main::BANK_SPRITE-2, main::@6/main::BANK_SPRITE+$20-2 )
[182] bnkcpy_vram_address::vdest#2 = phi( main::@5/VERA_PALETTE+$20, main::@6/main::VRAM_SPRITE )
void memcpy_bank_to_vram(dword memcpy_bank_to_vram::vdest , dword memcpy_bank_to_vram::src , dword memcpy_bank_to_vram::num)
memcpy_bank_to_vram: scope:[memcpy_bank_to_vram] from main::@5 main::@6
[182] memcpy_bank_to_vram::num#2 = phi( main::@5/$20, main::@6/(word)$40*$20 )
[182] memcpy_bank_to_vram::beg#0 = phi( main::@5/main::BANK_SPRITE-2, main::@6/main::BANK_SPRITE+$20-2 )
[182] memcpy_bank_to_vram::vdest#2 = phi( main::@5/VERA_PALETTE+$20, main::@6/main::VRAM_SPRITE )
[183] *VERA_CTRL = *VERA_CTRL & ~VERA_ADDRSEL
[184] bnkcpy_vram_address::$0 = < bnkcpy_vram_address::vdest#2
[185] bnkcpy_vram_address::$1 = < bnkcpy_vram_address::$0
[186] *VERA_ADDRX_L = bnkcpy_vram_address::$1
[187] bnkcpy_vram_address::$2 = < bnkcpy_vram_address::vdest#2
[188] bnkcpy_vram_address::$3 = > bnkcpy_vram_address::$2
[189] *VERA_ADDRX_M = bnkcpy_vram_address::$3
[190] bnkcpy_vram_address::$4 = > bnkcpy_vram_address::vdest#2
[191] bnkcpy_vram_address::$5 = < bnkcpy_vram_address::$4
[192] *VERA_ADDRX_H = bnkcpy_vram_address::$5
[184] memcpy_bank_to_vram::$0 = < memcpy_bank_to_vram::vdest#2
[185] memcpy_bank_to_vram::$1 = < memcpy_bank_to_vram::$0
[186] *VERA_ADDRX_L = memcpy_bank_to_vram::$1
[187] memcpy_bank_to_vram::$2 = < memcpy_bank_to_vram::vdest#2
[188] memcpy_bank_to_vram::$3 = > memcpy_bank_to_vram::$2
[189] *VERA_ADDRX_M = memcpy_bank_to_vram::$3
[190] memcpy_bank_to_vram::$4 = > memcpy_bank_to_vram::vdest#2
[191] memcpy_bank_to_vram::$5 = < memcpy_bank_to_vram::$4
[192] *VERA_ADDRX_H = memcpy_bank_to_vram::$5
[193] *VERA_ADDRX_H = *VERA_ADDRX_H | VERA_INC_1
[194] bnkcpy_vram_address::end#0 = bnkcpy_vram_address::beg#0 + bnkcpy_vram_address::num#2
[195] bnkcpy_vram_address::$7 = > bnkcpy_vram_address::beg#0
[196] bnkcpy_vram_address::$8 = bnkcpy_vram_address::$7 << 8
[197] bnkcpy_vram_address::$9 = < bnkcpy_vram_address::$8
[198] bnkcpy_vram_address::$10 = < bnkcpy_vram_address::beg#0
[199] bnkcpy_vram_address::$11 = > bnkcpy_vram_address::$10
[200] bnkcpy_vram_address::$23 = (word)bnkcpy_vram_address::$9
[201] bnkcpy_vram_address::$12 = bnkcpy_vram_address::$23 | bnkcpy_vram_address::$11
[202] bnkcpy_vram_address::$13 = bnkcpy_vram_address::$12 >> 5
[203] bnkcpy_vram_address::$14 = > bnkcpy_vram_address::beg#0
[204] bnkcpy_vram_address::$15 = bnkcpy_vram_address::$14 << 3
[205] bnkcpy_vram_address::$16 = < bnkcpy_vram_address::$15
[206] bnkcpy_vram_address::$24 = (word)bnkcpy_vram_address::$16
[207] bnkcpy_vram_address::$17 = bnkcpy_vram_address::$13 + bnkcpy_vram_address::$24
[208] bnkcpy_vram_address::bank#0 = (byte)bnkcpy_vram_address::$17
[209] bnkcpy_vram_address::$18 = < bnkcpy_vram_address::beg#0
[210] bnkcpy_vram_address::addr#0 = bnkcpy_vram_address::$18 & $1fff
[211] bnkcpy_vram_address::addr#1 = (byte*)bnkcpy_vram_address::addr#0 + $a000
[212] *((byte*) 40801) = bnkcpy_vram_address::bank#0
to:bnkcpy_vram_address::@1
bnkcpy_vram_address::@1: scope:[bnkcpy_vram_address] from bnkcpy_vram_address bnkcpy_vram_address::@3
[213] bnkcpy_vram_address::bank#2 = phi( bnkcpy_vram_address/bnkcpy_vram_address::bank#0, bnkcpy_vram_address::@3/bnkcpy_vram_address::bank#5 )
[213] bnkcpy_vram_address::addr#4 = phi( bnkcpy_vram_address/bnkcpy_vram_address::addr#1, bnkcpy_vram_address::@3/bnkcpy_vram_address::addr#2 )
[213] bnkcpy_vram_address::pos#2 = phi( bnkcpy_vram_address/bnkcpy_vram_address::beg#0, bnkcpy_vram_address::@3/bnkcpy_vram_address::pos#1 )
[214] if(bnkcpy_vram_address::pos#2<bnkcpy_vram_address::end#0) goto bnkcpy_vram_address::@2
to:bnkcpy_vram_address::@return
bnkcpy_vram_address::@return: scope:[bnkcpy_vram_address] from bnkcpy_vram_address::@1
[194] memcpy_bank_to_vram::end#0 = memcpy_bank_to_vram::beg#0 + memcpy_bank_to_vram::num#2
[195] memcpy_bank_to_vram::$7 = > memcpy_bank_to_vram::beg#0
[196] memcpy_bank_to_vram::$8 = memcpy_bank_to_vram::$7 << 8
[197] memcpy_bank_to_vram::$9 = < memcpy_bank_to_vram::$8
[198] memcpy_bank_to_vram::$10 = < memcpy_bank_to_vram::beg#0
[199] memcpy_bank_to_vram::$11 = > memcpy_bank_to_vram::$10
[200] memcpy_bank_to_vram::$23 = (word)memcpy_bank_to_vram::$9
[201] memcpy_bank_to_vram::$12 = memcpy_bank_to_vram::$23 | memcpy_bank_to_vram::$11
[202] memcpy_bank_to_vram::$13 = memcpy_bank_to_vram::$12 >> 5
[203] memcpy_bank_to_vram::$14 = > memcpy_bank_to_vram::beg#0
[204] memcpy_bank_to_vram::$15 = memcpy_bank_to_vram::$14 << 3
[205] memcpy_bank_to_vram::$16 = < memcpy_bank_to_vram::$15
[206] memcpy_bank_to_vram::$24 = (word)memcpy_bank_to_vram::$16
[207] memcpy_bank_to_vram::$17 = memcpy_bank_to_vram::$13 + memcpy_bank_to_vram::$24
[208] memcpy_bank_to_vram::bank#0 = (byte)memcpy_bank_to_vram::$17
[209] memcpy_bank_to_vram::$18 = < memcpy_bank_to_vram::beg#0
[210] memcpy_bank_to_vram::addr#0 = memcpy_bank_to_vram::$18 & $1fff
[211] memcpy_bank_to_vram::addr#1 = (byte*)memcpy_bank_to_vram::addr#0 + $a000
[212] *((byte*)VIA1+OFFSET_STRUCT_MOS6522_VIA_PORT_A) = memcpy_bank_to_vram::bank#0
to:memcpy_bank_to_vram::@1
memcpy_bank_to_vram::@1: scope:[memcpy_bank_to_vram] from memcpy_bank_to_vram memcpy_bank_to_vram::@3
[213] memcpy_bank_to_vram::bank#2 = phi( memcpy_bank_to_vram/memcpy_bank_to_vram::bank#0, memcpy_bank_to_vram::@3/memcpy_bank_to_vram::bank#5 )
[213] memcpy_bank_to_vram::addr#4 = phi( memcpy_bank_to_vram/memcpy_bank_to_vram::addr#1, memcpy_bank_to_vram::@3/memcpy_bank_to_vram::addr#2 )
[213] memcpy_bank_to_vram::pos#2 = phi( memcpy_bank_to_vram/memcpy_bank_to_vram::beg#0, memcpy_bank_to_vram::@3/memcpy_bank_to_vram::pos#1 )
[214] if(memcpy_bank_to_vram::pos#2<memcpy_bank_to_vram::end#0) goto memcpy_bank_to_vram::@2
to:memcpy_bank_to_vram::@return
memcpy_bank_to_vram::@return: scope:[memcpy_bank_to_vram] from memcpy_bank_to_vram::@1
[215] return
to:@return
bnkcpy_vram_address::@2: scope:[bnkcpy_vram_address] from bnkcpy_vram_address::@1
[216] if(bnkcpy_vram_address::addr#4!=$c000) goto bnkcpy_vram_address::@3
to:bnkcpy_vram_address::@4
bnkcpy_vram_address::@4: scope:[bnkcpy_vram_address] from bnkcpy_vram_address::@2
[217] bnkcpy_vram_address::bank#1 = ++ bnkcpy_vram_address::bank#2
[218] *((byte*) 40801) = bnkcpy_vram_address::bank#1
to:bnkcpy_vram_address::@3
bnkcpy_vram_address::@3: scope:[bnkcpy_vram_address] from bnkcpy_vram_address::@2 bnkcpy_vram_address::@4
[219] bnkcpy_vram_address::bank#5 = phi( bnkcpy_vram_address::@2/bnkcpy_vram_address::bank#2, bnkcpy_vram_address::@4/bnkcpy_vram_address::bank#1 )
[219] bnkcpy_vram_address::addr#5 = phi( bnkcpy_vram_address::@2/bnkcpy_vram_address::addr#4, bnkcpy_vram_address::@4/(byte*) 40960 )
[220] *VERA_DATA0 = *bnkcpy_vram_address::addr#5
[221] bnkcpy_vram_address::addr#2 = ++ bnkcpy_vram_address::addr#5
[222] bnkcpy_vram_address::pos#1 = ++ bnkcpy_vram_address::pos#2
to:bnkcpy_vram_address::@1
memcpy_bank_to_vram::@2: scope:[memcpy_bank_to_vram] from memcpy_bank_to_vram::@1
[216] if(memcpy_bank_to_vram::addr#4!=$c000) goto memcpy_bank_to_vram::@3
to:memcpy_bank_to_vram::@4
memcpy_bank_to_vram::@4: scope:[memcpy_bank_to_vram] from memcpy_bank_to_vram::@2
[217] memcpy_bank_to_vram::bank#1 = ++ memcpy_bank_to_vram::bank#2
[218] *((byte*)VIA1+OFFSET_STRUCT_MOS6522_VIA_PORT_A) = memcpy_bank_to_vram::bank#1
to:memcpy_bank_to_vram::@3
memcpy_bank_to_vram::@3: scope:[memcpy_bank_to_vram] from memcpy_bank_to_vram::@2 memcpy_bank_to_vram::@4
[219] memcpy_bank_to_vram::bank#5 = phi( memcpy_bank_to_vram::@2/memcpy_bank_to_vram::bank#2, memcpy_bank_to_vram::@4/memcpy_bank_to_vram::bank#1 )
[219] memcpy_bank_to_vram::addr#5 = phi( memcpy_bank_to_vram::@2/memcpy_bank_to_vram::addr#4, memcpy_bank_to_vram::@4/(byte*) 40960 )
[220] *VERA_DATA0 = *memcpy_bank_to_vram::addr#5
[221] memcpy_bank_to_vram::addr#2 = ++ memcpy_bank_to_vram::addr#5
[222] memcpy_bank_to_vram::pos#1 = ++ memcpy_bank_to_vram::pos#2
to:memcpy_bank_to_vram::@1
void memcpy_to_vram(byte memcpy_to_vram::vbank , void* memcpy_to_vram::vdest , void* memcpy_to_vram::src , word memcpy_to_vram::num)
memcpy_to_vram: scope:[memcpy_to_vram] from main::@7
@ -572,7 +572,7 @@ cputc::@1: scope:[cputc] from cputc::@7
to:cputc::@return
void setnam(volatile byte* setnam::filename)
setnam: scope:[setnam] from LoadFileBanked
setnam: scope:[setnam] from load_to_bank
[292] strlen::str#1 = setnam::filename
[293] call strlen
[294] strlen::return#2 = strlen::len#2
@ -587,7 +587,7 @@ setnam::@return: scope:[setnam] from setnam::@1
to:@return
void setlfs(volatile byte setlfs::device)
setlfs: scope:[setlfs] from LoadFileBanked::@1
setlfs: scope:[setlfs] from load_to_bank::@1
asm { ldxdevice lda#1 ldy#0 jsr$ffba }
to:setlfs::@return
setlfs::@return: scope:[setlfs] from setlfs
@ -595,7 +595,7 @@ setlfs::@return: scope:[setlfs] from setlfs
to:@return
byte load(volatile byte* load::address , volatile byte load::verify)
load: scope:[load] from LoadFileBanked::@2
load: scope:[load] from load_to_bank::@2
[301] load::status = 0
asm { ldxaddress ldyaddress+1 ldaverify jsr$ffd5 bcserror lda#$ff error: stastatus }
to:load::@return

File diff suppressed because it is too large Load Diff

View File

@ -4,15 +4,6 @@ byte CONIO_SCREEN_BANK
byte CONIO_SCREEN_BANK#14 CONIO_SCREEN_BANK zp[1]:27 100.93636363636364
byte* CONIO_SCREEN_TEXT
word CONIO_SCREEN_TEXT#16 CONIO_SCREEN_TEXT zp[2]:28 0.6392405063291139
byte LoadFileBanked(byte LoadFileBanked::device , byte* LoadFileBanked::filename , dword LoadFileBanked::address)
byte* LoadFileBanked::addr
dword LoadFileBanked::address
byte LoadFileBanked::bank
const byte LoadFileBanked::bank#0 bank = (byte)><main::BANK_SPRITE>>5+(word)<>main::BANK_SPRITE<<3
byte LoadFileBanked::device
const byte LoadFileBanked::device#0 device = 8
byte* LoadFileBanked::filename
byte LoadFileBanked::return
const byte OFFSET_STRUCT_MOS6522_VIA_PORT_A = 1
const byte OFFSET_STRUCT_VERA_SPRITE_X = 2
const byte OFFSET_STRUCT_VERA_SPRITE_Y = 4
@ -108,50 +99,6 @@ const nomodify dword VERA_SPRITE_ATTR = $1fc00
const nomodify struct MOS6522_VIA* VIA1 = (struct MOS6522_VIA*) 40800
const nomodify byte WHITE = 1
void __start()
void bnkcpy_vram_address(dword bnkcpy_vram_address::vdest , dword bnkcpy_vram_address::src , dword bnkcpy_vram_address::num)
word~ bnkcpy_vram_address::$0 zp[2]:43 202.0
byte~ bnkcpy_vram_address::$1 reg byte a 202.0
word~ bnkcpy_vram_address::$10 zp[2]:59 202.0
byte~ bnkcpy_vram_address::$11 reg byte x 101.0
word~ bnkcpy_vram_address::$12 zp[2]:61 202.0
word~ bnkcpy_vram_address::$13 zp[2]:61 40.4
word~ bnkcpy_vram_address::$14 zp[2]:63 202.0
word~ bnkcpy_vram_address::$15 zp[2]:63 202.0
byte~ bnkcpy_vram_address::$16 reg byte a 101.0
word~ bnkcpy_vram_address::$17 zp[2]:61 101.0
word~ bnkcpy_vram_address::$18 zp[2]:15 202.0
word~ bnkcpy_vram_address::$2 zp[2]:45 202.0
word~ bnkcpy_vram_address::$23 zp[2]:61 202.0
word~ bnkcpy_vram_address::$24 zp[2]:65 202.0
byte~ bnkcpy_vram_address::$3 reg byte a 202.0
word~ bnkcpy_vram_address::$4 zp[2]:53 202.0
byte~ bnkcpy_vram_address::$5 reg byte a 202.0
word~ bnkcpy_vram_address::$7 zp[2]:55 202.0
word~ bnkcpy_vram_address::$8 zp[2]:55 202.0
byte~ bnkcpy_vram_address::$9 reg byte y 33.666666666666664
byte* bnkcpy_vram_address::addr
word bnkcpy_vram_address::addr#0 addr zp[2]:15 101.0
byte* bnkcpy_vram_address::addr#1 addr zp[2]:15 101.0
byte* bnkcpy_vram_address::addr#2 addr zp[2]:15 1001.0
byte* bnkcpy_vram_address::addr#4 addr zp[2]:15 1034.6666666666667
byte* bnkcpy_vram_address::addr#5 addr zp[2]:15 1501.5
byte bnkcpy_vram_address::bank
byte bnkcpy_vram_address::bank#0 reg byte x 60.599999999999994
byte bnkcpy_vram_address::bank#1 reg byte x 1501.5
byte bnkcpy_vram_address::bank#2 reg byte x 1034.6666666666667
byte bnkcpy_vram_address::bank#5 reg byte x 750.75
dword bnkcpy_vram_address::beg
dword bnkcpy_vram_address::beg#0 beg zp[4]:11 19.548387096774196
dword bnkcpy_vram_address::end
dword bnkcpy_vram_address::end#0 end zp[4]:7 39.357142857142854
dword bnkcpy_vram_address::num
dword bnkcpy_vram_address::num#2 num zp[4]:7 8.416666666666666
dword bnkcpy_vram_address::pos
dword bnkcpy_vram_address::pos#1 pos zp[4]:11 2002.0
dword bnkcpy_vram_address::pos#2 pos zp[4]:11 388.0
dword bnkcpy_vram_address::src
dword bnkcpy_vram_address::vdest
dword bnkcpy_vram_address::vdest#2 vdest zp[4]:3 37.875
void clearline()
byte~ clearline::$1 reg byte a 2.00000002E8
byte~ clearline::$2 reg byte a 2.00000002E8
@ -259,6 +206,15 @@ volatile byte* load::address loadstore zp[2]:40 33.666666666666664
byte load::return
volatile byte load::status loadstore zp[1]:48 1001.0
volatile byte load::verify loadstore zp[1]:42 50.5
byte load_to_bank(byte load_to_bank::device , byte* load_to_bank::filename , dword load_to_bank::address)
byte* load_to_bank::addr
dword load_to_bank::address
byte load_to_bank::bank
const byte load_to_bank::bank#0 bank = (byte)><main::BANK_SPRITE>>5+(word)<>main::BANK_SPRITE<<3
byte load_to_bank::device
const byte load_to_bank::device#0 device = 8
byte* load_to_bank::filename
byte load_to_bank::return
void main()
const nomodify dword main::BANK_SPRITE = $12000
struct VERA_SPRITE main::SPRITE_ATTR loadstore zp[8]:67
@ -268,6 +224,50 @@ const byte* main::s[$2d] = "
sprite banked file load and display demo.
"
void memcpy_bank_to_vram(dword memcpy_bank_to_vram::vdest , dword memcpy_bank_to_vram::src , dword memcpy_bank_to_vram::num)
word~ memcpy_bank_to_vram::$0 zp[2]:43 202.0
byte~ memcpy_bank_to_vram::$1 reg byte a 202.0
word~ memcpy_bank_to_vram::$10 zp[2]:59 202.0
byte~ memcpy_bank_to_vram::$11 reg byte x 101.0
word~ memcpy_bank_to_vram::$12 zp[2]:61 202.0
word~ memcpy_bank_to_vram::$13 zp[2]:61 40.4
word~ memcpy_bank_to_vram::$14 zp[2]:63 202.0
word~ memcpy_bank_to_vram::$15 zp[2]:63 202.0
byte~ memcpy_bank_to_vram::$16 reg byte a 101.0
word~ memcpy_bank_to_vram::$17 zp[2]:61 101.0
word~ memcpy_bank_to_vram::$18 zp[2]:15 202.0
word~ memcpy_bank_to_vram::$2 zp[2]:45 202.0
word~ memcpy_bank_to_vram::$23 zp[2]:61 202.0
word~ memcpy_bank_to_vram::$24 zp[2]:65 202.0
byte~ memcpy_bank_to_vram::$3 reg byte a 202.0
word~ memcpy_bank_to_vram::$4 zp[2]:53 202.0
byte~ memcpy_bank_to_vram::$5 reg byte a 202.0
word~ memcpy_bank_to_vram::$7 zp[2]:55 202.0
word~ memcpy_bank_to_vram::$8 zp[2]:55 202.0
byte~ memcpy_bank_to_vram::$9 reg byte y 33.666666666666664
byte* memcpy_bank_to_vram::addr
word memcpy_bank_to_vram::addr#0 addr zp[2]:15 101.0
byte* memcpy_bank_to_vram::addr#1 addr zp[2]:15 101.0
byte* memcpy_bank_to_vram::addr#2 addr zp[2]:15 1001.0
byte* memcpy_bank_to_vram::addr#4 addr zp[2]:15 1034.6666666666667
byte* memcpy_bank_to_vram::addr#5 addr zp[2]:15 1501.5
byte memcpy_bank_to_vram::bank
byte memcpy_bank_to_vram::bank#0 reg byte x 60.599999999999994
byte memcpy_bank_to_vram::bank#1 reg byte x 1501.5
byte memcpy_bank_to_vram::bank#2 reg byte x 1034.6666666666667
byte memcpy_bank_to_vram::bank#5 reg byte x 750.75
dword memcpy_bank_to_vram::beg
dword memcpy_bank_to_vram::beg#0 beg zp[4]:11 19.548387096774196
dword memcpy_bank_to_vram::end
dword memcpy_bank_to_vram::end#0 end zp[4]:7 39.357142857142854
dword memcpy_bank_to_vram::num
dword memcpy_bank_to_vram::num#2 num zp[4]:7 8.416666666666666
dword memcpy_bank_to_vram::pos
dword memcpy_bank_to_vram::pos#1 pos zp[4]:11 2002.0
dword memcpy_bank_to_vram::pos#2 pos zp[4]:11 388.0
dword memcpy_bank_to_vram::src
dword memcpy_bank_to_vram::vdest
dword memcpy_bank_to_vram::vdest#2 vdest zp[4]:3 37.875
void memcpy_in_vram(byte memcpy_in_vram::dest_bank , void* memcpy_in_vram::dest , byte memcpy_in_vram::dest_increment , byte memcpy_in_vram::src_bank , void* memcpy_in_vram::src , byte memcpy_in_vram::src_increment , word memcpy_in_vram::num)
byte~ memcpy_in_vram::$0 reg byte a 2.0000000002E10
byte~ memcpy_in_vram::$1 reg byte a 2.0000000002E10
@ -493,11 +493,11 @@ reg byte x [ gotoxy::y#4 gotoxy::y#3 gotoxy::y#0 gotoxy::y#2 ]
reg byte a [ vera_layer_set_text_color_mode::layer#3 ]
reg byte x [ clrscr::l#2 clrscr::l#1 ]
reg byte y [ clrscr::c#2 clrscr::c#1 ]
zp[4]:3 [ bnkcpy_vram_address::vdest#2 ]
zp[4]:7 [ bnkcpy_vram_address::num#2 bnkcpy_vram_address::end#0 ]
zp[4]:11 [ bnkcpy_vram_address::pos#2 bnkcpy_vram_address::beg#0 bnkcpy_vram_address::pos#1 ]
reg byte x [ bnkcpy_vram_address::bank#2 bnkcpy_vram_address::bank#0 bnkcpy_vram_address::bank#5 bnkcpy_vram_address::bank#1 ]
zp[2]:15 [ memcpy_to_vram::s#2 memcpy_to_vram::s#1 bnkcpy_vram_address::addr#5 bnkcpy_vram_address::addr#4 bnkcpy_vram_address::addr#1 bnkcpy_vram_address::addr#2 bnkcpy_vram_address::addr#0 bnkcpy_vram_address::$18 cputs::s#2 cputs::s#0 clrscr::line_text#2 clrscr::line_text#1 clrscr::line_text#0 ]
zp[4]:3 [ memcpy_bank_to_vram::vdest#2 ]
zp[4]:7 [ memcpy_bank_to_vram::num#2 memcpy_bank_to_vram::end#0 ]
zp[4]:11 [ memcpy_bank_to_vram::pos#2 memcpy_bank_to_vram::beg#0 memcpy_bank_to_vram::pos#1 ]
reg byte x [ memcpy_bank_to_vram::bank#2 memcpy_bank_to_vram::bank#0 memcpy_bank_to_vram::bank#5 memcpy_bank_to_vram::bank#1 ]
zp[2]:15 [ memcpy_to_vram::s#2 memcpy_to_vram::s#1 memcpy_bank_to_vram::addr#5 memcpy_bank_to_vram::addr#4 memcpy_bank_to_vram::addr#1 memcpy_bank_to_vram::addr#2 memcpy_bank_to_vram::addr#0 memcpy_bank_to_vram::$18 cputs::s#2 cputs::s#0 clrscr::line_text#2 clrscr::line_text#1 clrscr::line_text#0 ]
reg byte x [ vera_layer_get_color::layer#2 vera_layer_get_color::layer#1 vera_layer_get_color::layer#0 ]
reg byte a [ vera_layer_get_color::return#2 vera_layer_get_color::return#0 vera_layer_get_color::return#1 ]
reg byte x [ insertup::i#2 insertup::i#1 ]
@ -553,12 +553,12 @@ zp[2]:37 [ setnam::filename ]
zp[1]:39 [ setlfs::device ]
zp[2]:40 [ load::address ]
zp[1]:42 [ load::verify ]
reg byte a [ bnkcpy_vram_address::$1 ]
reg byte a [ bnkcpy_vram_address::$3 ]
reg byte a [ bnkcpy_vram_address::$5 ]
reg byte y [ bnkcpy_vram_address::$9 ]
reg byte x [ bnkcpy_vram_address::$11 ]
reg byte a [ bnkcpy_vram_address::$16 ]
reg byte a [ memcpy_bank_to_vram::$1 ]
reg byte a [ memcpy_bank_to_vram::$3 ]
reg byte a [ memcpy_bank_to_vram::$5 ]
reg byte y [ memcpy_bank_to_vram::$9 ]
reg byte x [ memcpy_bank_to_vram::$11 ]
reg byte a [ memcpy_bank_to_vram::$16 ]
reg byte a [ vera_layer_get_mapbase_bank::return#0 ]
reg byte a [ vera_layer_get_mapbase_offset::$0 ]
reg byte a [ vera_layer_get_rowshift::return#0 ]
@ -568,32 +568,32 @@ reg byte a [ vera_layer_get_textcolor::return#0 ]
reg byte a [ vera_layer_get_color::return#3 ]
reg byte x [ cputc::color#0 ]
reg byte a [ cputc::$15 ]
zp[2]:43 [ cputc::conio_addr#0 cputc::conio_addr#1 bnkcpy_vram_address::$0 clearline::c#2 clearline::c#1 strlen::str#2 strlen::str#1 strlen::str#0 ]
zp[2]:43 [ cputc::conio_addr#0 cputc::conio_addr#1 memcpy_bank_to_vram::$0 clearline::c#2 clearline::c#1 strlen::str#2 strlen::str#1 strlen::str#0 ]
reg byte a [ cputc::$2 ]
reg byte a [ cputc::$4 ]
reg byte a [ cputc::$5 ]
reg byte a [ cputc::$6 ]
reg byte a [ cputc::scroll_enable#0 ]
zp[2]:45 [ cputc::$16 bnkcpy_vram_address::$2 memcpy_in_vram::i#2 memcpy_in_vram::i#1 strlen::len#2 strlen::len#1 strlen::return#2 setnam::$0 ]
zp[2]:45 [ cputc::$16 memcpy_bank_to_vram::$2 memcpy_in_vram::i#2 memcpy_in_vram::i#1 strlen::len#2 strlen::len#1 strlen::return#2 setnam::$0 ]
zp[1]:47 [ setnam::filename_len ]
zp[1]:48 [ load::status ]
zp[2]:49 [ vera_layer_set_config::addr#0 screenlayer::vera_layer_get_height1_return#0 screenlayer::vera_layer_get_height1_return#1 screenlayer::$5 ]
zp[2]:51 [ vera_layer_set_tilebase::addr#0 screenlayer::vera_layer_get_width1_config#0 vera_layer_get_mapbase_offset::return#2 vera_layer_get_mapbase_offset::return#0 ]
reg byte a [ vera_layer_get_color::$3 ]
zp[2]:53 [ vera_layer_get_color::addr#0 bnkcpy_vram_address::$4 ]
zp[2]:53 [ vera_layer_get_color::addr#0 memcpy_bank_to_vram::$4 ]
reg byte a [ vera_layer_get_color::$0 ]
reg byte a [ vera_layer_get_color::$1 ]
reg byte a [ cputln::$2 ]
zp[2]:55 [ cputln::temp#0 cputln::temp#1 bnkcpy_vram_address::$7 bnkcpy_vram_address::$8 ]
zp[2]:55 [ cputln::temp#0 cputln::temp#1 memcpy_bank_to_vram::$7 memcpy_bank_to_vram::$8 ]
reg byte a [ cputln::$3 ]
zp[1]:57 [ insertup::cy#0 ]
zp[1]:58 [ insertup::width#0 ]
reg byte a [ insertup::$3 ]
zp[2]:59 [ insertup::line#0 insertup::start#0 memcpy_in_vram::dest#0 bnkcpy_vram_address::$10 ]
zp[2]:61 [ memcpy_in_vram::src#0 bnkcpy_vram_address::$23 bnkcpy_vram_address::$12 bnkcpy_vram_address::$13 bnkcpy_vram_address::$17 ]
zp[2]:63 [ memcpy_in_vram::num#0 bnkcpy_vram_address::$14 bnkcpy_vram_address::$15 ]
zp[2]:59 [ insertup::line#0 insertup::start#0 memcpy_in_vram::dest#0 memcpy_bank_to_vram::$10 ]
zp[2]:61 [ memcpy_in_vram::src#0 memcpy_bank_to_vram::$23 memcpy_bank_to_vram::$12 memcpy_bank_to_vram::$13 memcpy_bank_to_vram::$17 ]
zp[2]:63 [ memcpy_in_vram::num#0 memcpy_bank_to_vram::$14 memcpy_bank_to_vram::$15 ]
reg byte a [ clearline::$5 ]
zp[2]:65 [ clearline::addr#0 bnkcpy_vram_address::$24 ]
zp[2]:65 [ clearline::addr#0 memcpy_bank_to_vram::$24 ]
reg byte a [ clearline::$1 ]
reg byte a [ clearline::$2 ]
reg byte a [ vera_layer_get_color::return#4 ]