そんなマイナー機のエミュレータを作っている人がいて、ちょっと感動。
ありがたく使わせてもらう。
まずはパソピア7。BIOSとBASICを吸い出す必要があるので、実機を用意。
データレコーダーとの接続ケーブルも必要。
録音は ぷちれこ(PetitRec)を使用。設定は48000Hz/8ビット/モノラルで録音。
Vistaでは録音できなかったのでXPで使用。XPなら64bit版XPでも大丈夫だった。
データレコーダー接続ケーブルの録音端子(赤)を、PCのライン入力に接続。
サウンドカードによっては結構ノイズを拾ってしまうので、品質の良いサウンドカードをお勧め。
パソピア7で、以下を入力。
コメントを入れるとオーバーメモリーになるので、コメント部分は入力しないどく
RUN で実行し、以下のように入力してBIOSの内容を0x9000~0xCFFFにコピー
1000 CLEAR ,&H8FFF 1010 WIDTH 80 1020 GOSUB 2010 1030 GOSUB 9010 1040 IF VER<>5 THEN GOSUB 9010 1050 GOSUB 2110 1060 A=&HF000:CALL A 1070 S=VAL("&H"+DA$) 1080 GOSUB 3010 1090 PRINT "":PRINT "... " 1100 S=VAL("&H"+DA$)+VAL("&H"+TB$)-128 1110 GOSUB 3010 1990 END 2000 '--- Version Check --- 2010 P=PEEK(&HFFFB) 2020 IF P=&H58 THEN VER=1:PRINT"T-ROM Ver 1.0" 2030 IF P=&H0C THEN VER=2:PRINT"T-ROM Ver 1.1" 2040 IF P=&H76 THEN VER=3:PRINT"T-DISK Ver 1.0" 2050 IF P=&H45 THEN VER=4:PRINT"T-DISK Ver 2.0" 2060 IF P=&H84 THEN VER=5:PRINT"T-BASIC7 Ver 1.0" 2070 IF VER=0 THEN PRINT"Unknown Version" 2080 RETURN 2100 '--- Set Parameter --- 2110 A=&HF0F0 2200 PRINT"Memory Mode "; 2210 IF VER=5 THEN PRINT"(1:BIOS, 2:RAM, 4:V-RAM, 8:I/O Memory Mode)"; ELSE PRINT"(0bit:ROM[0:OnboardROM, 1:ROM Pack], 1bit:RAM[0:ROM Mode, 1:64KRAM Mode])"; 2220 INPUT" &H",MM$ 2300 POKE A+0, VAL("&H"+MM$) :'F0F0 メモリーモード 0bit:BIOS, 1bit:RAM, 2bit:V-RAM, 3bit:I/O Memory Mode 2310 POKE A+1, VAL("&H"+VS$) :'F0F1 V-RAM Select 11H:Blue, 22H:Red, 44H:Text/Green 2320 POKE A+2, VAL("&H"+RIGHT$(SD$,2)):'F0F2 転送元アドレス 2330 POKE A+3, VAL("&H"+LEFT$(SD$,2)) 2340 POKE A+4, VAL("&H"+RIGHT$(DA$,2)):'F0F4 転送先アドレス 2350 POKE A+5, VAL("&H"+LEFT$(DA$,2)) 2360 POKE A+6, VAL("&H"+RIGHT$(TB$,2)):'F0F6 転送バイト数 2370 POKE A+7, VAL("&H"+LEFT$(TB$,2)) 2380 RETURN 3000 ' --- Display Memory --- 3010 FOR I=S TO S+127 3020 IF I MOD 16=0 THEN PRINT "":PRINT RIGHT$("000"+HEX$(I),4);": "; 3030 A=PEEK(I):PRINT RIGHT$("0"+HEX$(A),2);" "; 3040 NEXT I 3050 RETURN 9000 ' --- Set Data --- 9010 A=&HF000 9020 READ D$ 9030 WHILE D$<>"END" 9040 POKE A,VAL("&H"+D$) 9050 A=A+1 9060 READ D$ 9070 WEND 9080 RETURN 9100 ' --- Data --- 9200 ' Initialize 9210 DATA DB,22 :'F000 IN A,(22H) メモリーステータス取得 0bit:BIOS, 1bit:RAM 9220 DATA E6,03 :'F002 AND 03H マスクしてスタック 9230 DATA F5 :'F004 PUSH AF 9240 DATA 00,00,00,00,00,00,00:'F005-F00B NOP パソピア用のために空けておく 9300 'V-RAM Bank Switching 9310 DATA F3 :'F00C DI 割り込み禁止 9320 DATA 3A,F0,F0 :'F00D LD A,(0F0F0H) 9330 DATA D3,3C :'F010 OUT (3CH),A メモリモードセット 9340 DATA 3E,03 :'F012 LD A,03H 9350 DATA D3,0F :'F014 OUT (0FH),A 8255コントロールポート設定 9360 DATA 3A,F1,F0 :'F016 LD A,(0F0F1H) 9370 DATA D3,0C :'F019 OUT (0CH),A V-RAM面セレクト 9380 DATA 3E,08 :'F01B LD A,08H 9390 DATA D3,0D :'F01D OUT (0DH),A アトリビュート設定 9400 DATA FB :'F01F EI 割り込み許可 9500 ' Data Translate 9510 DATA 2A,F2,F0 :'F020 LD HL,(0F0F2H) HL:転送元アドレス 9520 DATA ED,5B,F4,F0:'F023 LD DE,(0F0F4H) DE:転送先アドレス 9530 DATA ED,4B,F6,F0:'F027 LD BC,(0F0F6H) BC:転送バイト数 9540 DATA ED,B0 :'F02B LDIR ブロック転送 9600 ' Restore Memory Bank 9610 DATA F3 :'F02D DI 割り込み禁止 9620 DATA F1 :'F02E POP AF 9630 DATA D3,3C :'F02F OUT (3CH),A メモリモードセット→V-RAMアクセス不可 9640 DATA 3E,02 :'F031 LD A,02H 9650 DATA D3,0F :'F033 OUT (0FH),A 8255コントロールポート設定 9660 DATA FB :'F035 EI 割り込み許可 9670 DATA C9 :'F036 RET 9680 DATA END 9700 ' Initialize for Pasopia T/5 9710 DATA DB,22 :'F000 IN A, (22H) メモリーステータス取得 2bit:RAM(0:ROMモード, 1:64KRAMモード), 3bit:ROM(0:本体ROM, 1:ROMパック) 9720 DATA E6,0C :'F002 AND 0CH 2, 3bitをマスク 9730 DATA 0F :'F004 RRCA Aを3回右ローテイト 9740 DATA 0F :'F005 RRCA 9750 DATA 0F :'F006 RRCA 9760 DATA 30,02 :'F007 JR NC,LF00B 2bit:CarryフラグにRAMの値。Cy=0でジャンプ 9770 DATA F6,02 :'F009 OR 02H 1bit:RAMをセット 9780 DATA F5 :'F00B LF00B: PUSH AF 9790 DATA END
画面上には先頭と最後のバイナリが表示されるので、メモっとく。
Memory Mode (1:BIOS, 2:RAM, 4:V-RAM, 8:I/O Memory Mode) &H1 Source Address: &H4000 Destination Address: &H9000 Translation Byte: &H4000
Windowsでぷちれこの録音を開始して、パソピア側で
でwavファイルに保存。
BSAVE #-1,"BIOS",&H9000,&H4000
エミュレータに同梱されているwav2bin.exeに、録音したwavファイルをドラッグ&ドロップ。
生成されたbinファイルをバイナリエディタで開いて、パソピアの画面に表示されているバイナリと同じになるように、余分なバイナリを削除。
正常に録音できた場合、先頭のヘッダー部分38バイトと、最後の1バイトを削除すると同じになるはず。
もしずれている場合、ノイズなどで正常に録音できていない可能性があるので、録音レベルやサウンドカードを見直してみる
できたバイナリは、「BIOS.ROM」 というファイル名で保存
BASICは2回に分けて録音
前半
後半
Memory Mode (1:BIOS, 2:RAM, 4:V-RAM, 8:I/O Memory Mode) &H8 Source Address: &H0000 Destination Address: &H9000 Translation Byte: &H4000 ・・・ BSAVE #-1,"BASIC1",&H9000,&H4000
Memory Mode (1:BIOS, 2:RAM, 4:V-RAM, 8:I/O Memory Mode) &H8 Source Address: &H4000 Destination Address: &H9000 Translation Byte: &H4000 ・・・ BSAVE #-1,"BASIC2",&H9000,&H4000
BIOSと同じように、バイナリエディタでそれぞれ0x4000バイトに編集。
あわせて0x8000バイトのファイルを作成し、「BASIC.ROM」 というファイル名で保存。
0 件のコメント:
コメントを投稿