ぴゅう太のテープロードが不安定かつ時間がかかるので、試しにRAM&ROMカートリッジ2化してみました。
http://www.geocities.jp/parallel_computer_inc/cart.html
---------------- 0000 3FFF BIOS ---------------- 4000 4FFF BIOS 5000 5FFF G-BASIC1 ---------------- 6000 7FFF RAM ---------------- 8000 8FFF LOADER ---------------- 9000 BFFF G-BASIC2 ---------------- C000 DFFF RAM ---------------- F000 F0FF CPU RAM ----------------
G-BASICのプログラムはVRAMにある16KBなので、RAM&ROMカートリッジ2のローダーで読み込みました。
>mame64 pyuuta -ui_active -debug -resolution 512x384 -cass JUMPMAN.wav
MAMEのデバッガから以下のコマンドでDUMPしました
save ram.bin,F000,100,maincpu saved vram.bin,0000,4000,tms9928a
#include <libti99/vdp.h> void main() { /* VDP SETUP */ int x = set_bitmap_raw(VDP_SPR_8x8); VDP_SET_REGISTER(VDP_REG_MODE1, x); VDP_SET_REGISTER(VDP_REG_SIT, 7); // 1C00 /* VDP_SET_REGISTER(VDP_REG_CT, 0x80); // 2000 VDP_SET_REGISTER(VDP_REG_PDT, 0); // 0000 VDP_SET_REGISTER(VDP_REG_SDT, 3); // 1800 */ VDP_SET_REGISTER(VDP_REG_SAL,0x3E); // 1F00 /* RESTORE VRAM */ vdpmemcpy(0x0000, (unsigned char*)0x5000, 0x1000); vdpmemcpy(0x1000, (unsigned char*)0x9000, 0x3000); /* RETURN TO G-BASIC */ __asm__("li r0,>F000"); __asm__("li r1,>0100"); __asm__("li r15,>6000"); __asm__("movb *R0+,*R15+"); __asm__("dec r1"); __asm__("joc >0FFA"); __asm__("lwpi >6000"); __asm__("li r0,>8F00"); __asm__("li r1,>0100"); __asm__("li r15,>F000"); __asm__("movb *R0+,*R15+"); __asm__("dec r1"); __asm__("joc >0FFA"); __asm__("limi >0003"); __asm__("lwpi >F0A0"); __asm__("b @>0E5C"); }