2023年6月11日日曜日

爆弾男 for Pasopia7

ハドソンの爆弾男。いわゆるBOMBER MAN

RAM PAC2への保存方法は「ヒヨコファイター」と同じ。
バイナリサイズはヒヨコファイターより大きく、&H410Dで保存。
BSAVE"@bom", &H8F00, &H410D

風船オバケ?
ハドソンは、相変わらず粋なシナリオ設定...

オープニング画面
「8」「2」「4」「6」でBOMBER MANを上下左右に移動
スペースで爆弾を置く。

ルールはボンバーマンと同じ。
爆弾で全ての敵を倒すとクリア。
出口(EXIT)を爆弾で吹き飛ばすと、風船オバケ(?)が噴出するのは今のボンバーマンと同じ。

動画でどうぞ。



2023年6月10日土曜日

ICE BLOCK解析

ICE BLOCKを解析して気になったのだが、変態的なコードがちらほら(誉め言葉)

例えば、以下のようなロジック。(実際のコードは異なる)
call READ_JOY_DIRECTION
ld HL, xxxx ; ←BIOS処理が終わったらここに戻る
・・・
call READ_JOY_TRIGGER
or A ; ←BIOS処理が終わったらここに戻る
・・・
ret

READ_JOY_DIRECTION:
ld C, 51h ; 0E 51   BIOS Function#51h:Jobstick方向読込
; ld HL, 520Eh ; 21 0E 52
db 21h ; 21
READ_JOY_TRIGGER:
ld C, 52h ; 0E 52   BIOS Function#52h:Jobstickトリガ読込
jp BIOS_ENTRY ; BIOS呼出し。BIOS処理後はコール元に戻る

BIOS呼び出しを callではなくjpにしてみたり、
使っていないレジスタへの書込みで、2つのFunction# BIOSコールを共通処理にしたり。

あと、メモリ上のプログラムを書き換えて書き込む値を変更したりは普通にしている。
嫌いではないが面倒くさい...

dB-SOFTは札幌の会社でした。
現在はネットファーム・コミュニケーションズ(株)として札幌で活動しているようです。
以前ブログでMZ-1500版フラッピーPC-8001mk2SR 版キングフラッピーを紹介しましたが、Windows版FLAPPY WORLDが公開されており、無料で10ステージ遊べます。
試してみたい方はどうぞ。

2023年5月27日土曜日

ICE BLOCK 改

前回紹介したPasopia7用のICE BLOCK

キー操作がちょっと残念だったので少し改造してみた。
・キー操作は同じ2・4・6・8とスペース。(キー音は消した)
・Joystick対応。Port1・2どちらでもOK。A・Bボタンはスペースに割り当て。

パッチのコードはこんな感じ。
10 CLEAR ,&H87FF:SCREEN 2:WIDTH 40:CLS
20 LOCATE 8,10:PRINT"タダイマ マシンゴノ ロードチュウ"
30 BLOAD"ICE"
40 FOR I=&HDF00 TO &HDF6D:READ A$:POKE I,VAL("&H"+A$):NEXT
50 POKE &HD6BC,&H44:POKE &HD6BD,&HDF
60 POKE &HD6C6,&H05:POKE &HD6C7,&HDF
70 POKE &HD9E0,&H00:POKE &HD9E1,&HDF
80 POKE &HFF33,&H14
90 A=&H8800:CALL A
100 DATA CD,44,DF,B7,C0,3E,14,D3,30,DB,31,1F,30,33,3E,12
110 DATA D3,30,DB,31,17,17,30,26,17,17,30,1F,17,17,30,18
120 DATA 3E,01,D3,1B,DB,19,47,DB,1A,A0,1F,30,14,1F,30,08
130 DATA 1F,30,08,1F,30,08,AF,C9,3E,05,C9,3E,07,C9,3E,03
140 DATA C9,3E,01,C9,3E,21,D3,30,DB,31,17,30,12,E6,10,28
150 DATA 11,3E,01,D3,1B,DB,19,47,DB,1A,A0,F6,CF,3C,C8,3E
160 DATA 01,C9,3E,35,32,33,FF,3E,7F,D3,30,3E,AC,C9
BIOS経由ではなく直接キースキャンすることで、キー操作は少しスムーズになった。
ブロックが飛んでいる間や、敵がブロックを消している間はゲーム操作が止まるので、ぎこちなさは残ったまま。

あと、気になったのが小さい「ャ」。
カナキーでカナモードにした後、Shift+7キーで小さい「ャ」が入力できる。
ICE BLOCKゲーム中に小さい「ャ」を入力すると、以下の縞々画面が表示される。

英数入力に戻して背景色を指定するとBASIC画面が表示される。
なぜかWIDTH 50になっているので好きに変えて。
改造パッチはSTOPキーを小さい「ャ」に割り当てたので、BASICに戻りたい方は活用して。

BASICに戻るところも動画にしてみた。

もしパソピア7版のICE BLOCKを持っている方はお試しください。

2023年4月22日土曜日

ICE BLOCK for Pasopia7

今回はICE BLOCKを紹介

Pasopiaシリーズでは珍しくdB-SOFT

起動時、Disk Drivesは2以上をセットするとオーバーメモリーになるので注意。

オープニング画面

ペン太(真ん中の赤いペンギン)を2・4・6・8キーで移動。
スペースキーで、氷の移動・氷を砕く・壁を震わす、といった操作ができる。
壁を震わすと、壁に接する敵をいじけさせることができる。
敵の倒し方は、いじけた敵を食べる or 敵を氷で押しつぶす。

敵に触れるとペンギンは焼き鳥に

スターアイスを全て壊すと下のドアが開く

敵を全て倒す or ダイヤアイスを4つ並べる or 下のドアから脱出するとクリア。
クリアすると、コーヒーブレイクのアニメーション

コーヒーブレイクも含めて動画でどうぞ

キーの応答が鈍いのがちょっと残念。
説明書にはダンプリストとチェックサムプログラムが掲載されており、自分の実力で頑張って改造して、と書いてあるので自分で直せということか...


2023年3月4日土曜日

パソピア700修理

以前から調子悪いパソピア700があって、ずっと直したいと思っていた。

How many disk drivesの表示が出て、キー入力しても応答しない状態。
純正のキーボードでも、USBキーボードアダプタでもダメ。

まずは分解。パソピア700のマザーボードはこんな感じ。
下は以前紹介したパソピア7のマザーボート
パソピア700はFD関係のチップも載っているが、カスタムICもあってゆとりある配置。

まず疑ったのは電解コンデンサー。そんなに数もないので全部交換してみる。
が、交換しても改善せず。
上の写真の右側が、外付けキーボード用の信号を作るチップ達。(パソピア7には無い)
キー入力できないので、次はこの辺を調べてみる。

ロジアナで調べてみたが、外付けキーボードの信号はちゃんと入っているっぽい。
そういえば、キーの入力音は鳴っている。

ところで、Returnなどの操作キーと文字入力キーは入力音が違うのね。
GraphやShiftなどは音が鳴らないし、なかなか凝っていることに気づいた。

何回か電源ON/OFFしているうちに、モニターモードに入ることがあった。
モニターモードに入った時は、キー入力できる。メモリダンプやRAM書き換えもできる。
RAM/ROMダンプをXPAC2に保存するマシン語プログラムを作り、入力して実行する。
実行後はハングするが、ダンプはMRAMに保存されるので別のパソピアでSDカードに保存。

バイナリ比較した結果、BASIC ROM/BIOS ROMは問題なし。
(BASICもROMもパソピア7と微妙に違う。トータルで10数バイトの違い。)

ただDRAMのいくつかのアドレスでFFhを書き込んでもFBhになってしまう。
特定アドレスのbit3が死んでいるDRAMがありそう。

このパソピア700のDRAMは、富士通のMB8264A-15が8個搭載されていた。
別のパソピア700はTMM4164AP-15だったので、ロットによってチップは異なる様子。

はんだシュッ太郎でDRAMを取り外し、ソケットに置き換え。
その際にいくつかパターンを切ってしまったのでジャンパー線で修復。
シュッ太郎の先端を強く押し付けると、パターンが切れてしまうので注意。

新しいDRAMは、TMM4164互換の富士通MB8266A-10を装着。

来たー! ちゃんと動くようになった。
パソピア700はあまり流通していないと思うので、いつかは直したいとずっと思っていた。
修理できたのはよかった。

今回のパソピア700は塾で使われていたものらしく、PAC2スロットの中から消しゴムや小さい鈴が出てきた。子供たちよ、消しゴムはいいけど鈴はやめてくれ。

2023年2月19日日曜日

パソピア7/700のFDバックアップ

前回紹介したFDコピーをもう少し拡張してみる。
XPAC2を持っている方はSDカードも使えるので、フロッピーイメージを分割してファイルに保存する方法を考えてみる。

パソピアの2Dは、1トラックに32セクタ(1セクタ256バイト)で8KBのデータ領域。
XPAC2のスロット#5は、8KBのSRAM RAM PAC2になっているので、ここをバッファとして利用する。

SDカードにトラック毎のデータ保存用ファイルを用意する
同じフォルダ内に"ファイル名.xx"で、拡張子xxが00~34のファイルを用意。
Trackファイル00はサイド0が単密度(128バイト)なので6,144バイト、Trackファイル01~34は8,192バイトのファイルを用意。
各Trackファイルは、ヘッド0 セクター1→16、ヘッド1 セクター1→16の順番で、合計32セクターのデータが保存されます。

例えばFormat.xxというファイル名の場合、"Format.00"(6,144バイト)と"Format.01~.34"(それぞれ8,192バイト)の35ファイルを用意。
これら35ファイルは、SDカードの同じフォルダに格納しておきます。
以前紹介した自作フォーマッタで初期化したディスクをイメージ化したのでアップします

SDカードへのExportと、FDへのImportプログラムを用意したのでアップしました。
RAM PAC2イメージには"BACKFD"というファイル名で保存されています。
フロッピーからSDカードにExportする場合、最初に1を選択。
フロッピードライブ番号を選択し、SDカードのバス名を指定します。
例えば、DiskフォルダにFormat.00~34ファイルを置いている場合、パス名は「/Disk/Format.」を指定します。00~34の拡張子2文字は自動で入力されます。

SDカードへの保存が成功すると、"Completed successfully."が表示されます。

SDカードからフロッピーにImportする場合、最初の選択でに2番を選びます。
あとは同じように、フロッピードライブ番号を選択し、SDカードのバス名を指定します。
"Completed successfully."が表示されると、SDカードに保存してあった35トラックデータがフロッピーに書き戻しされています。

あと、せっかくWindowsでTrackファイルを読み書きできるようになったので、TrackデータとD88ファイルを相互変換するWindowsアプリを作ってみました。
実行ファイル(32bitと64bit)とコードをアップしました。(つたないコードですが...)

実行ファイル(D88Track.exe)上にトラック00ファイルをドラッグ&ドロップすると、00~34ファイルを読み込み、同じフォルダにD88ファイルとログを出力します。
逆にD88ファイルをドラッグ&ドロップすると、00~34までのトラックデータに分割して、同じフォルダにTrackファイルを出力します。

D88Track.exeを単独で起動した場合は、ファイルを開くダイアログが開くので、トラック00ファイルかD88ファイルを指定して開いてください。
その後の動作はドラッグ&ドロップ時と同じです。

これで作成したD88ファイルをエミュレータで読込みましたが、問題なく利用できました。
但し全てのファイルで確認したわけではないので、うまく動作しない場合は連絡ください。

D88ファイルはトラック順に並んでいない場合があります。一旦セクターデータのオフセット位置を調べてから、Trackファイル00から順番にファイル出力する仕組みにしています。

PC-98の2D対応5インチドライブがあれば、パソピアの2Dフロッピーから直接D88ファイルを作ることができますが、今は環境を用意するのも難しくなってきました。

今回のツールで、パソピアの2Dフロッピー <-> SDカードのTrackファイル <-> D88ファイルの相互変換できるようになったので、実機とエミュの行き来がしやすくなったのかなと思います。

あと、パソピア700には1ドライブ仕様があります。
1ドライブの場合、ディスクコピーする際に何度もフロッピー入替えが必要でしたが、SDカード経由でバックアップ・リストアできれば、楽にコピーできるようになります。

2023年2月18日土曜日

パソピア7/700用のFDコピー

パソピア7/700用フロッピーディスクのコピープログラムを作ってみる。

前回調べたフォーマット形式を参考に作ってみる。
パソピアの2Dは、0~34トラック、1トラック毎に32セクタで、1セクタは256バイト。
(但し、トラック0ヘッド0のみ単密度で128バイト)

パソピア7純正コピープログラムは2トラック16KB(4000h)ずつコピーしている。
今回はできるだけ短いプログラムを組んで、3トラックずつコピーする方法を考える。
裏RAM利用も考えたが、BIOSコールと排他になるのでシンプルな方法で行くことにする。

BIOSコールのプログラムは、F000hに配置。BASICプログラムはできるだけ短くして、バッファは9000h~EFFFhで24KB(3トラック分)確保できました。

FDコピーのRAMPACイメージとBASICテキストをアップしました。
RAMPACイメージにはCOPYFDのファイル名で保存しています。

コピーを実行する前に、コピー先のフロッピーをフォーマットしておく必要があります。
COPYFDを実行すると、オリジナルのコピー元FDドライブ番号(1~4)と、コピー先FDドライブ番号(1~4)を聞かれるので入力。
フロッピーディスクを2枚それぞれ挿入し、RETURNキーを押すとコピー開始されます。
コピーが無事に終われば、"Completed Successsfully."の表示がされます。

1ドライブのみの場合、オリジナルFDドライブ番号とコピー先FDドライブ番号の両方に"1"をセット。ドライブ#1のディスクを入れ替えながら進めます。
前述のとおり、パソピアの2Dはトラック#0~#34の35トラックあり、3トラックずつコピーするので、12×2回のディスク入れ替えが必要です。
純正のコピーツールは2トラックずつなので、もっと大変だったはず...

パソピア700実機でコピーしたディスクを98で読み込んでバイナリ比較してみましたが、ちゃんとコピーできているようです。エミュでの確認も大丈夫でした。

パソピア7+FDD実機での確認はしていませんので、もし試された方がいましたら報告もらえると助かります。

1ドライブコピー時のディスク入れ替えは苦痛(というかドライブ壊れないか心配)なので、別な方法も考えてみます。
(続く)