Date: 09 Mar 92 21:09 Message-ID: <6596@JF2ZNW> From: JA2FKV@JF2ZNW To: CDOS@JPN Subject: PC88 EXTRAMBOARD CHECK [MSK] Path: JF2PZG!JF2PZG!JN2BDS!JE2ZOX!JF2ZOJ!JF2ZOI!JF2ZNW ATERM: R:JA2FKV@JF2ZNW.18.JNET2.JPN.AS V:0.98u 98uv Writer :Shungo Matsunaga Fujieda Shizuoka (LDB3229) U/L Date:92-03-09 21:08:26J ここCDOSフィールドの拡張RAMBORD自作者としてつとに有名な 筒井さんから疑問が出ていましたのでマルチボードAを持つものとしてちょ っと参考までにRESさせて頂きます。  それに先立ち先日実は88用のFSWで有名なCPM80コンパチOSで あるPD−DOSの2HD版とBANKRAM版が同様なRAMBORAD チェックをしていてこのチェックが純正の場合無効である為に暴走を起こす という現象が有りました。 以下はJS1GESさんが見つけて下さったル ーチンを使用させて頂きますが...  尚この文章はLDBネットにPDDOS改定の参考資料としてU/Lさせ て頂いたものの書き直しになります。CDOSフィールドにも流したと思い ます。  PDDOSのBANK版PDDOSのBANKGEN.COMの中の当該 ルーチン(BANK実装チェック)では以下のように判定をしています。 -----------------------------------------------------------------------  BANK版でのシステム対応タイプは、以下の4種類です。(マニュアル  13.2 リリースノートより)    TYPE BANK設定  1) 128KB 0-3  2) 128KB+128KB 0-3,4-7  3) 1MB 0-7,10-17,20-27,30-37  4) 128KB+1MB 0-3,8-F,18-1F,28-2F,38-3F ------------------------------------------------------------------------ どうやら判定の方法ですが、4から1の順に4回チェックしており以下のプログ ラムを用いて返ってくる値でチェックしています。 3E xx LD A,xx D3 E3 OUT (0E3H),A DB E3 IN A,(0E3H) FE yy CP yy -- JP Z,タイプOK! ------------------------------------------------------------------------ 尚調査の結果BANKGEN.COMもHDGEN.COMもこの部分はまった く同一のアドレスに存在する事が解りました。  さてこの番地を見つけておいて以下の簡単なプログラムをDEBUGで書いて 置いて調べました。 ------------------------------------------- 3E xx LD A,xx D3 E3 OUT (0E3H),A DB E3 IN A,(0E3H) FF RST 38H --------------------------------------------   でそれぞれの場合の返り値をZZとしてパッチした値をQQとしますと。 この返り値とは88MR+マルチボードAの場合です(注意) TYPE xx yy ZZ QQ A>DEBUG (BNKGEN.COM)HDGEN.COM のアドレス 4) 18H 18H 18H FFH 09C3H 3) 10H 10H F0H FFH 09DDH 2) 04H F4H 04H 04H 09F7H 1) 03H F3H F3H F3H 0A11H  ここで YY はPDDOSの作者が期待している実装時の返り値です。  ZZ は 今回の返りです。  つまりノーマルなままだとケース(4)と認知されてしまうようだったのです。 ..   この例からだけだと汎用的な応用は出来ないのではと思いますが..  この時の私のシステムは88MR+マルチボードAという環境で純正8バンク分  という事になります。   そうそう00−08のチェックに対してはF0,F1,F2,F3,04,05   ,06,07と値を返してくれました。   ところがいいかげんです。08,09は実装されていませんが08,09と返し  て来ます。 このボードどうなっているのでしょうか?    特に00バンクと10バンクのチェックにたいしてはなんと同じ値を返すとい  うまさに無法状態です。   さて88M*シリーズでは普通返り値は実装バンク以外に対して0FFHを返す  様です。 またリバーコムのROMBO2もI/Oデーター機器のRAMBOARD  同様にというか正規?に04に対しては0F4Hと返すそうです。   問題はNECの純正という名前の893なボードが共存している場合これらのチェ  ックが全て無効になってしまう事です。   従ってくいくいさんのRAMDISKは  1.指定バンクにたいして読みだしを行い(1バイト)  2.一度それをセーブし  3.反転データーかなんかを書き込み  4.確かに書き込まれたらバンクありと判定し  5.元のデーターを書き込むというチェックをしているとの事です。    これはCDOSの立ち上り時(RAMDISK)にやっているようです。  RAMSAFEというコマンドも似たような事をしているようです。   諸悪の根源はNECの純正後付けRAMボードにあるようですね。  尚マルチボードA(PC−8801−20)の場合設定は  1.PC−8831/MW/PC−IN501を使用するかまったく使わないか  2.第2水準漢字ROMの読みだしをするかしないか  3.カード1ー3(0)にするか使わないかの設定がジャンパーで可能となって    います。    従って4ー7バンクにも8ーBにもCーFにももちろん1枚目としても設定   が可能となっています。(0ーFの内の任意4バンク)  I/Oデーターのものは私は知りませんが上のデーターを参考にすれば1MBy  teのボードの事はわかりそうですね。    尚実装されていないバンクを選択したときは読めないというのは極当然の事  だと思いますがこのヤクザなマルチボードを実装するとどうなるかな...    間違いを起こしていないところをみると読みだしは不可だと思いますが..  無い袖ならぬRAMは読めませんから..(^_^)    以上私のマルチボードAを例にとり継ぎはぎで説明しましたが,参考になったで しょうか? SRAMで1Mボードを作るとIC価格だけで4万円程度になります。  I/Oの製品がなくなった以上自作しか手は有りません。 筒井さんのBulに 大いに期待しています。 出来たら制作Know−Howと設計回路図の配布を是非 お願いします。 ディジタル回路は注意をまもれば結構再現性高く制作出来るような 気がします。 問題は(^0_0^)です。 PS 実は上のパッチを当てたPD−DOS2HD版はMCでは当然具合が悪かった   ので直しました。 +マルチボードAのMRと共存させるにはどうすればいいか   は実に簡単ですから解は書きません(^_^)。 Tsutsui HBBS:JF2PZG Hold:[6] >