きっかけは"ePX-7" - PIONEER PX-7 emulator for Win32です。
http://homepage3.nifty.com/takeda-toshiya/msx/
ダウンロードしてドキュメントを読むと必要なBIOSは以下になるようです。
--- Internal ROM image BASIC.ROM $0000-$7FFF of SLOT 0 EXT.ROM $4000-$5FFF of SLOT 2
ここらへんを参考にして、MAKEROM.BASを実行してみます。
http://ponrevival.blogspot.jp/2008/05/msxrom.html
PX-7に必要なBASIC.ROMはMSX.ROMをリネームするとしても、P-BASICに必要なEXT.ROMがDUMPできません。
MSX.ROM $0000-$7FFF of SLOT 0 DISK.ROM $4000-$7FFF of SLOT 3
MAKEROM.BASを改造してEXTROM.BASを作成してみました。
100 DEFINT A-Z:AD=&HD000:SZ=&HD05A:RB=&HD05F 110 DEFUSR=AD:DEFUSR1=&HD030:DEFUSR2=&HD0D0:DEFUSR3=&HD100:DEFUSR4=&HD130 120 READ D$:IF D$<>"*" THEN POKE AD,VAL("&h"+D$):AD=AD+1:GOTO 120 130 FL$(0)="BASIC ROM":FL$(1)="MSX2 ROM":FL$(2)="MSX2P ROM" 140 FL$(3)="MSX2EXT ROM":FL$(4)="MSX2PEXTROM":POKE SZ,&H40:POKE RB,0 240 ' 250 PRINT"System ROMs":PRINT"Main ROM(1)..";:A=USR(&H80) 260 V=PEEK(&H902D):IF V>2 THEN BEEP:GOTO 670 ELSE PRINT USR1(FL$(V)) 270 PRINT"Main ROM(2)..";:A=USR(&H4080):POKE RB,1:PRINT USR1(FL$(V)) 280 POKE RB,0:IF V=0 THEN 300 290 PRINT"Sub ROM..";:A=USR(PEEK(&HFAF8)):PRINT USR1(FL$(V+2)) 300 PRINT"Disk ROM..";:A=USR(&H4000+PEEK(&HFFA8)) 310 PRINT USR1("DISK ROM"):A=USR2(0) 430 ' 440 A=USR(&H4002) 460 F$="EXT ROM" 480 PRINT"EXT ROM..";:POKE RB,0:A$=USR1(F$) 500 PRINT F$ 710 ' 720 PRINT"complete!":END 730 ' 740 DATA fe,02,c0,23,23,f3,7e,23,66,2e,00,01,00,40,11,00 (省略)
実機ではPX-7+HBD-F1で動作確認しています。
なおEXT.ROMは16Kではなく8Kです。
>cut EXT.ROM 0 2000 start=00000000,size=2000 crc32=a5d0c0b9,addr=0000-1fff >copy 0 EXT.ROM >cut BASIC.ROM 0 8000 start=00000000,size=8000 crc32=ee229390,addr=0000-7fff
OpenMSXによるとSHA1は正しいようです。
<?xml version="1.0" ?> <!DOCTYPE msxconfig SYSTEM 'msxconfig2.dtd'> <msxconfig> <info> <manufacturer>Pioneer</manufacturer> <code>PX-7</code> <release_year>1984?</release_year> <description/> <type>MSX</type> </info> <CassettePort/> <devices> <PPI id="ppi"> <key_ghosting>true</key_ghosting> <sound> <volume>16000</volume> </sound> <io base="0xA8" num="4"/> <keyboard_type>jp_ansi</keyboard_type> <has_keypad>false</has_keypad> <key_ghosting_sgc_protected>true</key_ghosting_sgc_protected> <code_kana_locks>true</code_kana_locks> <graph_locks>false</graph_locks> </PPI> <VDP id="VDP"> <version>TMS99X8A</version> <io base="0x98" num="2"/> </VDP> <PSG id="PSG"> <sound> <volume>21000</volume> <balance channel="1">0</balance> <balance channel="2">-100</balance> <balance channel="3">100</balance> </sound> <io base="0xA0" num="2" type="O"/> <io base="0xA2" num="1" type="I"/> </PSG> <PrinterPort id="Printer Port"> <io base="0x90" num="2"/> </PrinterPort> <primary slot="0"> <ROM id="MSX BIOS with BASIC ROM"> <rom> <filename>roms/px-7_basic-bios1.rom</filename> <sha1>302afb5d8be26c758309ca3df611ae69cced2821</sha1> </rom> <mem base="0x0000" size="0x8000"/> </ROM> <RAM id="Main RAM"> <mem base="0x8000" size="0x8000"/> </RAM> </primary> <primary external="true" slot="1"/> <primary slot="2"> <PioneerLDControl id="PBASIC"> <rom> <filename>roms/px-7_pbasic.rom</filename> <sha1>665d805f96616e1037f1823050657b7849899283</sha1> </rom> <mem base="0x4000" size="0x4000"/> <device idref="ppi"/> <device idref="VDP"/> </PioneerLDControl> </primary> <primary external="true" slot="3"/> </devices> </msxconfig>
(注)このページは個人的に吸い出したROMのCRCを表示するだけです。