2013.5.2
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第386回]


●ZドライブのMBASICでSTARTREKを!

このところZドライブに対する機能拡張について書いております。
前回までをお読みになって、「次はやっぱりこれだろうな」とお思いになられたかと思います。
まあ。
そういうことです。
やっぱりこれをやらなくてはお話が終わりません。

ZドライブでMBASICを起動してSTARTREKをロードしました。

画面ではうまくいったように見えますけれど…。
じつは異常に早くロードが完了してしまいました。
A〜Dドライブに比べますとZドライブでのロードは速いのですけれど、それでも5〜6秒程度はかかるはずです。
でも1秒かかったかというくらいで終わってしまいました。
むむ。
おかしい。
LIST[Enter]
と入力してみましたら。

load "STRTRK2"


Ok
list
list
10 REM ****
20 WIDTH 80
30 PRINT CHR$(26)
220 FOR XX=1 TO 6:PRINT:NEXT:PRINT TAB(20);"THE USS ENTERPRISE --- NCC-1701":   
   LIST
Ok
たったこれだけしか表示されません。
それ以外にもちょっとおかしなところがあります。

実はA〜DドライブではSTARTREKプログラムは正しくロードできるのですが、なぜかロード後のLIST、RUNコマンドは一回の入力では反応してくれません。
2度目の入力でやっと応答があります。
このことにつきましてはまだ未解決ですが、まあ、大勢に影響はありませんから、とりあえずはそのままにしておくつもりです。
今回のZドライブでも2回LISTコマンドを入力しています。
それはそれとしまして、これじゃあお話になりません。

む。
もしかして、ひょっとしたら…。
VFDUMP.EXEでSTRTRK2.BASのデータセクタを確認してみました。
ビンゴでした。

これはAドライブですが、そこにもSTRTRK2.BASがセーブされています。
最初にDIRエリア(セクタ0)を確認すると、STRTRK2.BASはブロック000Eからセーブされていることがわかります。
ブロック000Eの先頭セクタb計算しますと16×12=224になります。
そこでセクタ224を表示させました。
すると、ちょうど最初の1セクタだけがロードされたことがわかりました。

実は。
前回書きましたようにMBASICではファイルのロードにシーケンシャルREADではなくて、ランダムREAD(ファンクション21H)を使っていることがわかりました。
そこでZドライブに限り、ランダムREADはZBDOSの内部でシーケンシャルREADにパイプしてしまいました。
しかし、そのようにしただけで、READのレコードb+1するところはZドライブでは不要なので無視していたのですが…。
ひょっとしたらレコードb更新しないとそこでロードを打ち切ってしまうのではないか、と推測しました。
で。
そのようにZBDOSを修正して、再度STRTRK2.BASをロードしてみましたところ。
今度は、できてしまいました。
下はZドライブ上で起動したMBASICでSTRTRK2.BASをロードして、それを実行させたところの画面です。

久々に。
めでたし、めでたし、です。

ワンボードマイコンでCP/Mを![第386回]
2013.5.2upload

前へ
次へ
ホームページトップへ戻る