謎の謎パー CASIO PD-7000をもっと知りたい! その1

f:id:PocketGriffon:20200719004247j:plain

PD-7000で分かってきた事

何時間か使ってみて「なんとなく」分かった事があるので、ずらずらと書いてみたい。

 

DOS汎用のプログラムなら動く

・メモリ構成

・VRAM構成

・ROMへ書き込みするとシステムが落ちる

 ・OmniBook425は電池駆動だと通信に失敗する

 

 DOS汎用のプログラムなら動く

DOS汎用…PC-9801用でもIBM互換機用でもなく…ホントの汎用なら動く。

最初から日本語が表示出来ているので、日本語化を前提としたソフト、例えばUsageが日本語で表示されるLHA.EXEなども日本語で表示される(先頭の写真がソレだ)。

 

画面解像度が640x200ドットあるように見えるが、実際には違う。

文字的には80x12キャラクタが表示出来る。

とは言いつつもCGAとの互換性は全く無い。

構成としては謎パーらしく中途半端感がある。

画面関係はあとで詳しく書いてみようと思う。 

 

世に汎用のMS-DOSプログラム(主にツール類)はたくさん有り、これを動かすのが目的であれば十分に楽しめるマシンである事は間違いない。

大きな問題としては、電源を完全に遮断しても記憶しておいてくれるストレージがないので、Bドライブ(RAMディスク)の約1.3MBに収まる範囲でしかプログラムを貯めておけない。

 

メモリ構成

先頭から640KBがメインメモリ、それ以降にVRAM、ROMと続く標準的な構成。

B000:0000以降はROMで埋め尽くされていて、UMB的な使い方は出来ない。

ROMは上にも書いたとおりB000:0000〜F000:FFFFまでの320KBが見つかったが、実際にはROMドライブや漢字ROMもあるはずだけど、まだ見つかっていない。バンク切り替えなのかI/Oポート式なのかも不明なまま。 

 

VRAM構成

VRAMの構成はちょっと面白い構造になっていた。

上で「640x200ドットではない」と書いたが、現時点で分かった事を書いてみる。

 

解像度は640x196ドットという中途半端感満載の数字となっている。

実際の画面はこんな感じ。液晶が汚いのは許して(T-T)

f:id:PocketGriffon:20200719095256j:plain

文字は8x16ドット構成で表示されている。

縦12文字だと192ドットで4ドット余る計算になるが、実際に余ってるw

そして余った4ドットは文字がスクロールしても、その場に取り残される。

 

VRAM構成についてはホントに変則的だ。

セグメントはA000hからの、良くある一般的なVRAM配置。

横640ドットという事で1バイト8ドット(ON/OFF)、これは想像の通り。

しかし1行が80バイトではなく、128バイトとなっている。

0〜79バイト目が表示されていて、80〜127バイト目は表示されないのだ。

そして1ドット下のラインは128バイト目から始まる。

つまりこんな感じ。

 

0ドット目のライン A000:0000〜004F

1ドット目のライン A000:0080〜00CF

2ドット目のライン A000:0100〜014F

  :

 

こんな構成のため、640x196ドットというサイズなのにVRAMの表示領域分は24.5KBある。VRAMとしては25KB(A000:0000〜63FF)。

PC-8801などの1プレーン16KBというサイズとは対照的だ。

乗算が出来る8086系でこの構成は…と思うが、単純にハード設計側の問題な気もする。

 

そしてもっとアレなのが画面下部にあるインジケータの表示。

f:id:PocketGriffon:20200719100511j:plain

この、それぞれの状態を示すインジケータだけど、実はここもビットマップ表示。
しかも!

VRAM的には連続した領域にあってA000:6400から1ライン128バイト構成なのは、上のメイン画面と同じなんだけど、なんとドットの縦幅がメイン画面の2倍ある。1ドットの点を打つと縦長のドットが表示されるのだ!

おかげでこの太さがあるのも関わらず、縦2ドットで構成されている。

メイン画面から分離されている事を利用して、ブログレスバーとかゲームのマップの進み具合とか、そういうのの表示に使えたら楽しいかもなー。

ただ、インジケータは割り込みで処理されているらしく、何かの処理に専念していてもキーを押せば更新されてしまう。ゲームで使うにはちょっと相性が良くない(^^;;

 

ちなみにVRAMというかA000hセグメントは64KBがRAMになっているようだ。インジケータの後のメモリ(6500h〜)は値を書き込んでも画面には反映されない。もしかしたら2ページ目として使えるのかも知れないが、現時点では空きRAMとしてカウント出来そう。

 

ROMへ書き込みするとシステムが落ちる

実際にはROMというよりはシステム領域にアクセスをすると、システムごと落ちる。

具体的には0000:03FFにある割り込みベクタ領域、B000:0000〜E000:FFFFのROM領域に書き込み動作を行おうとすると、警告画面が出てリセットを余儀なくされる。

さすがはビジネス機!(^^;

f:id:PocketGriffon:20200719111151j:plain

なぜかF000:0000からの64KBは保護されて無く、書き込んでも無視される。

これは、どの領域がRAMなのか…を探そうとして、メモリへの書き込みに成功するか失敗するかを試してみようとして気が付いた。

 

この画面、ちょっと嬉しいのはレジスタの情報が出てる事。停止したアドレスはフェッチの関係か数命令先を示すようだが、問題が起きたアドレスが大雑把に分かる。これとMAPファイルまたはSYMDEBで逆アセンブラする事で、落ちたプログラムの場所が正確に分かる。

正直言って面倒な機能だけど、嬉しい機能でもあるw

 

この機能、CPUがV30系統らしいのだけれども、そんなメモリ保護機能あったっけ?

でもシステムを起動した際にリセットベクタへ書き込む動作をするはずで、その時に何かのスイッチをON/OFFするはずだ…と思い、ROMの中を探す楽しみが増えた(^^)

 

OmniBook425は電池駆動だと通信に失敗する

 これはPD-7000というよりは、OmniBookの運用上で気が付いた事w

ACアダプタ繋げていないと、転送途中で何事も無かったかのように失敗する。最初は何が原因なのかと悩んだが、分かってしまえばなんてことは無かった(^^;;

 

とりあえずはこんな感じで!

VRAM構成も分かったし、何か作ってみたいなー。

やっぱり最初はメモリダンプですかね(^^;;

少し気合いを入れて作ってみようと思います!

やっぱり謎パーは楽しい!!(^^)

 

ではまた次回!(^-^)ノ