From 037382edb4e86dd7e25f28b8c045f4f7b5a0d291 Mon Sep 17 00:00:00 2001 From: lephe Date: Thu, 5 May 2016 13:31:14 +0200 Subject: [PATCH] Changed the test application name. --- ginttest.c | 311 +++++++++++++++++++++++++++++++++++++++++++++++++++ ginttest.g1a | Bin 0 -> 12280 bytes ginttest.ld | 104 +++++++++++++++++ 3 files changed, 415 insertions(+) create mode 100644 ginttest.c create mode 100644 ginttest.g1a create mode 100644 ginttest.ld diff --git a/ginttest.c b/ginttest.c new file mode 100644 index 0000000..5133959 --- /dev/null +++ b/ginttest.c @@ -0,0 +1,311 @@ +#include +#include +#include +#include +#include + +extern void __Print(const char *msg, int x, int y); +extern unsigned int gint_vbr, bgint, egint, gint_data; +#define print __Print + +void print_hex(unsigned int n, int x, int y) +{ + char ch[11] = "0x"; + int i; + + for(i = 0; i < 8; i++) + { + ch[9 - i] = (n & 0xf) + '0' + 39 * ((n & 0xf) > 9); + n >>= 4; + } + ch[10] = 0; + print(ch, x, y); +} +void print_bin(unsigned char n, int x, int y) +{ + char ch[9]; + int i; + + for(i = 0; i < 8;i ++) + { + ch[7 - i] = (n & 1) + '0'; + n >>= 1; + } + ch[8] = 0; + print(ch, x, y); +} + +void print_hexa(unsigned int n, int digits, int x, int y) +{ + char ch[20]; + int i; + + for(i = digits - 1; i >= 0; i--) + { + ch[i] = (n & 0xf) + '0' + 39 * ((n & 0xf) > 9); + n >>= 4; + } + + ch[digits] = 0; + print(ch, x, y); +} + +// Don't forget to enable key state debugging in the interrupt handler. +void keyboard_test(void) +{ + const char *names[] = { + "MPU_Unkown", + "MPU_SH7337", + "MPU_SH7355", + "MPU_SH7305", + "MPU_SH7724", + "Error" + }; + int x = 0; + char str[3]; + int keys[4] = { 0 }; + int i; + + print(names[MPU_CURRENT < 5 ? MPU_CURRENT : 5], 0, 0); + + print("gint size:", 0, 1); + print_hex(&egint - &bgint, 11, 1); + + while(1) + { + multigetkey(keys, 4, 0); + + if(keys[0] == KEY_EXIT && keys[1] == KEY_NONE) break; + + #define hexa(h) ('0' + (h) + 39 * ((h) > 9)) + + x = (x + 1) & 15; + str[0] = hexa(x); + str[1] = 0; + print(str, 20, 0); + + for(i = 0; i < 4; i++) + { + str[0] = hexa((keys[i] >> 4) & 0x0f); + str[1] = hexa(keys[i] & 0x0f); + str[2] = 0; + print(str, 19, i + 3); + } + + #undef hexa + } +} + +/* +const unsigned char data[1024] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 7, 159, 0, 0, 1, 192, 0, 0, 0, 0, 0, 121, 240, 0, 0, 0, +31, 191, 192, 0, 3, 224, 27, 216, 0, 0, 1, 251, 252, 0, 0, 0, 57, 247, 222, +30, 7, 240, 36, 36, 62, 25, 131, 159, 24, 255, 129, 224, 0, 227, 142, 126, 1, +192, 45, 172, 127, 127, 192, 14, 1, 255, 199, 224, 0, 227, 140, 240, 1, 192, +26, 88, 115, 127, 224, 14, 57, 221, 207, 0, 0, 227, 13, 192, 1, 192, 34, 68, +120, 30, 0, 14, 25, 156, 220, 0, 0, 227, 253, 252, 1, 192, 36, 36, 126, 28, +0, 14, 219, 156, 223, 192, 0, 227, 253, 252, 1, 192, 36, 36, 31, 12, 0, 46, +27, 140, 223, 192, 0, 227, 141, 193, 193, 192, 40, 20, 7, 140, 0, 206, 25, 140, +220, 28, 0, 227, 140, 225, 129, 199, 24, 24, 99, 156, 1, 14, 25, 204, 206, 24, +0, 227, 142, 127, 1, 195, 39, 228, 255, 156, 2, 14, 24, 237, 199, 240, 1, 247, +222, 62, 1, 198, 44, 44, 223, 30, 2, 31, 28, 237, 131, 224, 1, 224, 0, 0, 3, +254, 27, 216, 0, 0, 4, 30, 0, 0, 0, 0, 3, 192, 0, 0, 7, 252, 0, 0, 0, 0, 4, +60, 1, 249, 240, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 4, 0, 97, 240, 56, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 224, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +4, 0, 47, 192, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 32, 255, 128, 63, 128, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 32, 255, 0, 48, 78, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 15, 176, 255, 0, 112, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 8, 56, 255, 0, +96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 8, 60, 255, 0, 224, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 130, 56, 126, 255, 3, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 192, +62, 255, 15, 224, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 14, 191, 255, 192, 0, +0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 6, 129, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, +1, 0, 0, 6, 0, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 7, 128, 63, 192, +1, 0, 96, 1, 224, 1, 0, 0, 0, 2, 0, 0, 7, 0, 31, 192, 0, 0, 95, 1, 11, 68, 88, +0, 0, 4, 0, 0, 7, 128, 31, 192, 0, 1, 192, 129, 204, 85, 100, 0, 0, 8, 0, 0, +15, 128, 63, 224, 0, 0, 95, 1, 8, 85, 68, 0, 1, 144, 0, 0, 31, 128, 143, 224, +64, 0, 96, 1, 232, 41, 68, 0, 2, 96, 0, 31, 255, 129, 7, 248, 96, 0, 0, 0, 0, +0, 0, 0, 4, 0, 0, 96, 254, 129, 7, 254, 96, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 128, +254, 131, 135, 255, 224, 0, 0, 1, 192, 64, 16, 0, 8, 0, 7, 0, 254, 131, 255, +63, 224, 0, 0, 1, 38, 113, 208, 0, 8, 0, 13, 0, 222, 147, 254, 31, 224, 0, 0, +1, 41, 74, 80, 0, 8, 0, 25, 0, 222, 67, 254, 31, 160, 0, 0, 1, 41, 74, 80, 0, +12, 0, 49, 0, 222, 19, 254, 62, 48, 0, 0, 1, 198, 113, 208, 0, 2, 0, 32, 128, +222, 195, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 2, 0, 124, 64, 220, 151, 135, 248, +127, 0, 0, 0, 0, 0, 0, 0, 2, 0, 66, 32, 221, 223, 7, 240, 255, 0, 0, 0, 0, 0, +0, 0, 2, 0, 129, 23, 93, 159, 15, 241, 131, 0, 0, 0, 0, 0, 0, 0, 4, 0, 128, +136, 217, 95, 3, 226, 9, 0, 0, 1, 240, 0, 0, 0, 4, 0, 128, 72, 89, 95, 129, +228, 18, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 72, 73, 127, 128, 224, 36, 0, 0, 0, 0, +0, 0, 0, 28, 1, 0, 76, 129, 127, 192, 96, 8, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, +231, 203, 124, 96, 64, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 1, 28, 123, 240, 12, 64, +1, 0, 0, 0, 0, 0, 0, 0, 16, 1, 2, 28, 143, 128, 15, 192, 7, 0, 0, 0, 0, 0, 0, +0, 16, 1, 4, 17, 143, 24, 15, 192, 14, 0, 0, 0, 0, 0, 0, 0, 28, 1, 4, 1, 135, +24, 31, 192, 24, 0, 0, 0, 0, 0, 0, 0, 18, 1, 62, 1, 135, 248, 63, 224, 192, +0, 0, 0, 0, 0, 0, 0, 35, 1, 195, 1, 135, 128, 254, 126, 1, 0, 0, 0, 0, 0, 0, +0, 35, 193, 131, 195, 135, 255, 248, 112, 1, 0, 0, 0, 0, 0, 0, 0, 67, 241, 131, +14, 207, 255, 192, 224, 3, 0, 0, 0, 0, 0, 0, 3, 67, 15, 143, 56, 255, 7, 1, +224, 7, 0, 0, 0, 0, 0, 0, 28, 130, 7, 255, 112, 204, 7, 131, 224, 31, 0, 0, +0, 0, 0, 0, 32, 134, 30, 29, 120, 156, 7, 255, 224, 127, 0, 0, 0, 0, 0, 63, +197, 206, 60, 56, 192, 248, 15, 255, 248, 255, 0, 0, 0, 0, 0, 120, 5, 227, 248, +56, 195, 248, 127, 191, 254, 63, 0, 0, 0, 0, 7, 254, 255, 193, 255, 15, 193, +255, 15, 31, 252, 31 }; +*/ + + +/* +static const unsigned char icon[76] = { +0, 0, 0, 0, 51, 156, 10, 68, 74, 82, 11, 68, 74, 82, 234, 196, 122, 82, 10, +68, 75, 156, 10, 68, 0, 0, 0, 4, 0, 254, 0, 4, 0, 130, 124, 4, 0, 130, 68, 4, +0, 2, 4, 4, 3, 238, 196, 4, 2, 170, 93, 252, 0, 254, 65, 252, 7, 40, 65, 252, +5, 232, 65, 252, 7, 15, 193, 252, 0, 0, 1, 252, 127, 255, 255, 252 }; + +char *ML_vram_adress(void) +{ + return display_getVRAM(); +} + +void ML_bmp_or_cl(const unsigned char *bmp, int x, int y, int width, int height) +{ + unsigned short line; + char shift, *screen, *p; + int i, j, real_width, begin_x, end_x, begin_y, end_y; + char bool1=1, bool2=1, bool3; + if(!bmp || x<1-width || x>127 || y<1-height || y>63 || height<1 || width<1) return; + p = (char*)&line; + real_width = (width-1>>3<<3)+8; + if(y < 0) begin_y = -y; + else begin_y = 0; + if(y+height > 64) end_y = 64-y; + else end_y = height; + shift = 8-(x&7); + if(x<0) + { + begin_x = -x>>3; + if(shift != 8) bool1 = 0; + } else begin_x = 0; + if(x+real_width > 128) end_x = 15-(x>>3), bool2 = 0; + else end_x = real_width-1>>3; + bool3 = (end_x == real_width-1>>3); + screen = ML_vram_adress()+(y+begin_y<<4)+(x>>3); + + for(i=begin_y ; i>3)+begin_x] << shift; + if(bool1) screen[begin_x] |= *p; + if(shift!=8) screen[begin_x+1] |= *(p+1); + for(j=begin_x+1 ; j>3)+j] << shift; + screen[j] |= *p; + if(shift!=8) screen[j+1] |= *(p+1); + } + } + line = bmp[i*(real_width>>3)+end_x]; + if(bool3) line &= -1< +#include <7305.h> + +/* +unsigned int exec(void (*f)(void)) +{ + int t, s, dt, ds; + + t = (int)RTC.R64CNT; + s = 10 * (RTC.RSECCNT.TENS) + RTC.RSECCNT.ONES; + + (*f)(); + + dt = (int)RTC.R64CNT - t; + ds = (10 * (RTC.RSECCNT.TENS) + RTC.RSECCNT.ONES) - s; + if(dt < 0) ds--, dt += 64; + + return (ds << 8) | dt; +} + +void btest_ml_icon(void) +{ + int i; + for(i = 0; i < 5000; i++) + { + ML_bmp_or_cl(icon, 0, 30, 30, 19); + } +} +void btest_gint_icon(void) +{ + extern Image binary_icon_start; + + int i; + for(i = 0; i < 5000; i++) + { + dimage(&binary_icon_start, 0, 0, Blend_Or); + } +} +*/ + +int main(void) +{ + extern Image binary_symbol_start; + extern Image binary_symbol2_start; + extern Image binary_icon_start; + extern Image binary_sprites_start; + extern Image binary_swords_start; + + extern const void *vrams[4]; + + Image *sybl = &binary_symbol_start; + Image *sybl2 = &binary_symbol2_start; + + dclear(); + dreverse_area(0, 0, 127, 30); + + dimage(sybl, 0, 0, Blend_Or); + dimage(sybl, 20, 0, Blend_And); + dimage(sybl, 40, 0, Blend_Or | Blend_And); + dimage(sybl, 90, 0, Blend_Or | Blend_Invert); + + dimage(sybl2, 0, 20, Blend_Or); + dimage(sybl2, 20, 20, Blend_And); + dimage(sybl2, 28, 20, Blend_And); + dimage(sybl2, 40, 20, Blend_Or | Blend_And); + dimage(sybl2, 90, 20, Blend_Or | Blend_Invert); + + dimage(&binary_icon_start, 2, 35, Blend_Or); + + dreverse_area(35, 31, 127, 63); + dimage(&binary_sprites_start, 50, 31, Blend_And); + + dupdate(); +/* + do key = getkey(); + while(key != KEY_EXE && key != KEY_EXIT); + if(key == KEY_EXIT) return 0; + + print("h'sszz 64z=1s", 0, 0); + print("ML", 14, 0); + print("gint", 17, 0); + print("---------------------", 0, 1); + + print("30*19 icon", 0, 2); + print(wait, 12, 2); + print_hexa(exec(btest_ml_icon), 4, 12, 2); + print(wait, 17, 2); + print_hexa(exec(btest_gint_icon), 4, 17, 2); +*/ + while(getkey() != KEY_EXE); + + dclear(); + dimage(&binary_swords_start, 20, 20, Blend_Or); + dupdate(); + + while(getkey() != KEY_EXE); + return 0; +} diff --git a/ginttest.g1a b/ginttest.g1a new file mode 100644 index 0000000000000000000000000000000000000000..4e1e26dab8d08e415340984d5e54f5c3eb3337f4 GIT binary patch literal 12280 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 rom + + .rodata : { + *(.rodata) + *(.rodata.*) + + _romdata = ALIGN(4) ; + } > rom + + + + /* + RAM sections : bss section and read/write data. + The BSS section is meant to be stripped from the ELF file (to + reduce the binary size) and initialized with zeros in the + initialization routine, therefore its location is undefined. + */ + + .bss : { + _bbss = . ; + *(.bss) + _ebss = . ; + } > ram + + .data : AT(_romdata) ALIGN(4) { + _bdata = . ; + *(.data) + *(.data.*) + _edata = . ; + } > ram + + .cc : AT(_romdata + SIZEOF(.data)) ALIGN(4) { + *(.eh_frame) + *(.jcr) + + _gint_data = _romdata + SIZEOF(.data) + SIZEOF(.cc) ; + } > ram + + + + /* + Real RAM : interrupt handler. + */ + + .gint_int : AT(_gint_data) ALIGN(4) { + /* The vbr needs to be 0x100-aligned because of an ld issue. */ + . = ALIGN(0x100) ; + _gint_vbr = . ; + + _bgint = . ; + + /* Interrupt handler. */ + . = _gint_vbr + 0x600 ; + *(.gint.int.entry) + *(.gint.int) + + _egint = . ; + } > realram +}