復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第439回]
●TURBO PASCAL(3)
前回からの続きです。
H様のご努力によりまして、TURBO PASCALが暴走してしまう原因が、0080HからのDMAエリアに置かれているジャンプテーブルが、ファイルOPENによって破壊されてしまうためだということがわかりました。
ことは私の思い違いにありました。
CP/Mでは、ファイル名サーチ(ファンクション11H、ファンクション12H)をコールすると、ディレクトリアクセスのためにDIRバッファに読み込んだディレクトリの内容をDMAバッファにコピーします。
私はてっきりその動作はファイルOPENやファイルCLOSEでも行なわれると思い込んでしまっておりました。
それでそのようにプログラムを組んでしまっていたことが、今回のTURBO PASCALでファイルOPENと同時に暴走してしまう原因になってしまったのでした。
ZBDOSプログラムを手直しして、DMAバッファとDIRバッファの扱いを整理しましたところ、TURBO PASCALが正しく動作するようになりました。
といいましてもTURBO PASCALは使ったことがなくて、扱い方がよくわかりませんので、とりあえずの基本的な操作の一部を試しただけですけれど。
編集のために、Work file としてhello.txtを指定しました。
hello.txtの内容が表示されました。
カーソルが1番上の行の1桁目に表示されています。
ここで編集作業が行なえるようですが。
ま。とりあえずは、パスということで。
作業を終了するときは[Ctrl]+[K]に続いて[d]を入力します。
おや。これは確かWordStarと同じですね。
コンパイルです。
デフォルトではコンパイルの結果作られる実行プログラムはメモリに置かれます。
それをCom−file作成に変更してコンパイルを実行します。
このあたりはManualに説明があるのですが、Com−file出力の指定も[C]でコンパイルの実行も[C]なので、ちょいと不安になります。
コンパイルを実行しました。
うまくいったようです。
[D]を入力してディレクトリを表示させてみました。
HELLO.COMが作成されています。
HELLO.COMを実行しました。
最後にZB3[Enter]でCP/Mモードを終了してZB3BASICに戻ると、文字表示が太字から通常の表示に戻りました。
●ESCシーケンスを追加しました(2)
前回はTURBO PASCALで使われている太字指定のエスケープシーケンスを追加しました。
ところがTURBO PASCALで使われているエスケープシーケンスはそれだけではありませんでした。
上のほうで、Work fileにHELLO.TXTを指定して、その中身が表示されている画面がありますが、最初はこんなふうに表示されていたのです。
なんじゃ、こりゃあ。
という感じですが、よくよく見ますとどうやらカーソルの位置指定を指示しているらしいことがわかります。
カーソル位置指定のエスケープシーケンスは、ESC=yxを組込み済みです([第397回])。
しかしカーソルの位置指定としては今回のやり方のほうがわかりやすいです。
一般形は ESC[yy;xxH です。
yyは01〜25で行位置を指定します。
xxは01〜80で桁位置を指定します。
とにかくこのままでは使い物になりませんから、これもそのように動作するように組み込んでしまいました。
その結果は上で見ていただいた通りですが、せっかくですので、もう一度見ていただきましょう。
●TURBO PASCALの入手先
TURBO PASCALは以前にもご紹介しましたこちらのページ(http://www.retroarchive.org/cpm/lang/lang.htm)からダウンロードできます。
そこにあるTPAS30.ZIPとTP_301A.ZIPがCP/M−80用ですがTP_301A.ZIPのほうが少しだけ後のバージョンのようです。
こちら(http://ldlabo.hishaku.com/NO32/main.htm)に日本語の解説があります。
ワンボードマイコンでCP/Mを![第439回]
2013.7.14upload
前へ
次へ
ホームページトップへ戻る