G-BASICのゲームをカートリッジ化するその2

ぴゅう太買えや」シリーズは現在8本あるので、フラッシュメモリカートリッジで8IN1化してみました。

https://kadenken.com/shopbrand/ct140/

f:id:tanam:20180217200734j:image:w360

----------------
0000 3FFF BIOS
----------------
4000 4FFF BIOS
5000 7FFF G-BASIC1
----------------
8000 8EFF LOADER
8F00 8FFF RAM
----------------
9000 9FFF G-BASIC2
----------------
F000 F0FF CPU RAM
----------------

フラッシュメモリカートリッジ用のローダーで読み込みました。

http://www.geocities.jp/parallel_computer_inc/cart.html


#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, 0x3000);
  vdpmemcpy(0x3000, (unsigned char*)0x9000, 0x1000);

  /* RETURN TO G-BASIC */
  __asm__("lwpi >F010");
  __asm__("li   r0,>8F20");
  __asm__("li   r1,>00E0");
  __asm__("li   r2,>F020");
  __asm__("movb *r0+,*r2+");
  __asm__("dec  r1");
  __asm__("joc  >0FFA");
  __asm__("limi >0003");
  __asm__("lwpi >F0A0");
  __asm__("b @>0E5C");
}