あれ。コレはこないだ見つけてファイルが存在しなかったやつじゃん。。。。//CP/M80 Simulator under BSD takeoka.org/~take/pds/cpms…
V30の仕様ってどんなじゃっけ。。。 V30の解説本はまだあったなあ。あれ持ってくるか。だんだんこのナンチャッテ音楽スタジオな部屋に2階の汚部屋のカオスが降りてきちゃってるという問題は感じつつ。
V30のエミュレーションモードにCALLN imm8命令とRETEM命令があったのだった。仕様とかコードとかもう覚えてないよググったら出てくるのかな。ねえ。
これか。CALLN imm8はED ED nnでRETEMはED FDらしい。コレも同じにしようかどうしようか。片方はHLTと、もう一つも1バイトで十分だし引数いらないねえ。。//コメント# | Z80 | スラッシュドット・ジャパン slashdot.jp/comments.pl?si…
「あれこれカナリ立派な構想はするけど実際には作らない人」ってのが多いわけだけど、まあ作ってみようと思うわけである。あんまり立派な構想を建てると実装が出来なくなっちゃうので、志は低めにしておきましょう。まず8080エミュレータの分離。現状はDOS版なのでTSR化か。
あー。どうせ仮想8080なんだから入出力命令が呼ばれたら全部8086側へトラップしちゃえばいいね。あとHLTは、仮想側で止まられても困っちゃうからコレもトラップして制御が戻って来るべき。命令コード問題は解決かな。8086のSP使っちゃう関係でDIしてられないからこれもトラップだ。
あーでもDIはいいのかな。8080レベルでの割り込みはない。8086レベルでの割り込みもDOS窓の中で動く限り無いわけで、DIは単に無視でいいのかも。。。。
1987年に書いて使ってたLattice-C関数のメモである。。。//Lattice C DOC web.archive.org/web/2005031518…
ああそうか。DOS窓で動かすならDOSなんだからコードセグメントCS:の中にワークエリア取ってデータ書いちゃえばいいじゃんね。COMモデル的に。
忘却の彼方からDOSのTSRコマンドの付け外しの作り方を発掘してどうにかその部分が出来たっぽい。アセンブラで書いたエミュレータがTSR出来たらフロントエンドはCで書ける。まあDOSでセグメントいじったりするCはカナリ忘れてるけど。 pic.twitter.com/EBhybv5Is9
アセンブラで書いてたインテルHEXファイルのローダをCで書き直すのか。。。同じ車輪を何度でも再発明。テニスで言えば素振りのようなものである。しらんけど。
いちんちシクハックしてハックしてた。アセンブラで書いた8080エミュレータをDOSに常駐させて、インテルHEXファイルを読み込んでそれを呼び出すCプログラムを書いて動かした。マイクロPlanの中間語ローダインタプリタのHEXを動かしてセルフコンパイル結果が一致することを確認した。
フロントエンドがエミュレータエンジンから分離できて、この部分がC言語になったので、アセンブラに比べて多少複雑なアルゴリズムも書きやすくなったはず。標準入出力テレタイプ式バージョンでも、紙テープの付け替えに相当する操作ができるようにするとかすればもうちょっと使いでが出るかも。
8080のアセンブラで書かれた8080用のセルフアセンブラというのをきのう写経したけど、これはアセンブラのパス1とパス2で同じソースプログラムの紙テープをセットして違う番地から8080をスタートさせるという操作仕様なので、そういうことがしやすいようにしようかなとも思う。
Tiny BASICも写経予定なんだけど、紙テープ時代のBASICというのはLISTでプログラムをリストアウトしたものを紙テープにもパンチすればそれが次回読み込めるという、そういう操作仕様なので、tty入力にファイルを割りこませるとか、tty出力の一部をファイルに切り出すとか。。
CPMエミュレータになかなかならないので、8080エミュレータの検証に進めないな。。。CPMエミュレータも適当に始めるべしかなあ。とりあえずDOSのFCBファンクション呼んじゃう版でも。30年ぐらい前にV30用を書いた時はアセンブラで書いたような気もするなあ。Cで再発明。
あー。初期版のCPMのCCPとBDOSのPLMソースと、CPM2.2のBDOSのデジタルリサーチ謹製のホンモノのアセンブラソースをプリントアウトしてホチキスで綴じたんだった。あれパラパラ読んでゲイリー・キルドール氏を偲びつつファイルハンドリングのお勉強ってことにしようかなあ。
Windows XPのdoskeyコマンド実行しても上下矢印キーが機能しないみたいだ。ナゼだろう。。。。