%include "WonderSwan.inc"
extern _main
-extern __end
+extern _test_copy
+extern __etext
+extern __edata
+extern __end
MYSEGMENT equ 0xF000
mov di,ax
mov ds,ax ; Clear Segments
mov es,ax
-
+
mov bp,ax ; Setup stack
mov ss,ax
mov sp,WS_STACK
mov sp,WSC_STACK ; New stack
- call _main
+ ;call _main
xor ax,ax ; Clear Ram
mov di,0x100
out IO_SRAM_BANK,al
+
+ ;mov cx, 0x100
+
; Video Init
in al,IO_VIDEO_MODE
or al,VMODE_16C_CHK | VMODE_CLEANINIT
;--------------------------------
; Set Segments for Copy
- mov ax,MYSEGMENT
+ mov ax,0xF000
mov ds,ax
xor ax,ax
mov es,ax
+ mov si, 0xF000
+ mov di, 0x1000
+ mov cx, 50
+ rep movsb
; Make BG
mov si,TileGfx
mov cx,(TileGfxE-TileGfx)/2
rep movsw
- mov si,TilePal
- mov di,WSC_PALETTES
- mov cx,16
- rep movsw
+ ;mov si,TilePal
+ ;mov di,WSC_PALETTES
+ ;mov cx,32
+ ;rep movsb
+;back:
+ call _main
+ ;call _main
+ ;call _test_copy
+ ;call _test_copy
+ ;jmp back
mov ax,BG_CHR(0,0,0,0,0) ; Initial Tile, Pal 0, Bank 0
mov di,bgmap
mov al,BG_ON | FG_ON
out IO_DISPLAY_CTRL,al
+blaat:
+ jmp blaat
+
; Loop Read Buttons
loop:
mov al,KEYPAD_READ_BUTTONS
#endasm
}
-int main()
+static unsigned char data[] = {
+0x65, 0x06, 0x67, 0x06, 0x79, 0x07, 0x8c, 0x08, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f,
+0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f
+};
+
+static unsigned char data2[] = {
+0x65, 0x06, 0x67, 0x06, 0x79, 0x07, 0x8c, 0x08, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f,
+0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f
+};
+
+static unsigned char data3[] = {
+0x65, 0x06, 0x67, 0x06, 0x79, 0x07, 0x8c, 0x08, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f,
+0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f
+};
+
+
+
+unsigned short *memcpy(dest, src, cnt)
+ unsigned short *dest;
+ unsigned short *src;
+ int cnt;
{
- while(1) {
- /* outport(0x15EE); */
- unsigned reg = 0x15;
- unsigned val = 0xEE;
- outport((reg << 8) | val);
+ int i;
+#asm
+ ;push ds
+ ;push es
+ mov ax, 0x0
+ mov ds, ax
+ xor ax, ax
+ mov es, ax
+#endasm
+ for (i = 0; i < cnt; ++i) {
+ *dest++ = *src++;
+ //*dest++ = 0x66;
}
+#asm
+ ;pop es
+ ;pop ds
+ mov ds, 0xF000
+#endasm
+ return dest;
+}
+
+void test_copy()
+{
+#asm
+ ;mov ds, 0
+#endasm
+
+// unsigned short dest = 0xFE00;
+// unsigned * ptr = dest;
+// *ptr++ = 0xDEAD;
+// *ptr++ = 0xAAAA;
+// *ptr++ = 0xDEAD;
+ memcpy(0xFE00, 0x1000, 16);
+#asm
+ ;mov ds, 0xF000
+#endasm
+ //wmemcpy(WSC_PALETTES, 0x2F000, 32);
+ return;
+}
+
+int main()
+{
+ unsigned short data_seg = 0xF000;
+ unsigned short data_ram = 0x1000;
+ unsigned short rel_ram = data_seg - data_ram;
+
+ /* dummy */
+ memcpy(0x0, 0x0, 0);
+
+ memcpy(0xFE00, data - rel_ram, 16);
+ //memcpy(0xFE00, data_seg + data, 16);
+
+ //while(1) {
+ // /* outport(0x15EE); */
+ // unsigned reg = 0x15;
+ // unsigned val = 0xEE;
+ // outport((reg << 8) | val);
+
+ //}
+
+
return 0;
}