![]() |
||
| みなさん、再びプロのプログラマに復帰したおいちゃんです。さてわたくしは、杉之原氏から「あんなもんCじゃないじゃ」と迫害を受けながらもBDSCを愛用しております。他人の作ったモジュールの御利益を賜わりたいと秘かにもくろむわたくしは、ちょっとだけ便利なモジュールを発表することにしました。(う〜ん、このもったいのつけかた?) P−CP/Mではうれしいことに拡張BIOSコールとしてエントリ29,30に、それぞれSVCとFNCが割り付けてあります。(SVCは2500独自のBIOSと考えてください。FNCは浮動小数点演算のモジュールパッケージです。)ところが、C言語ではマシン語をCALLするときには calla(adr, a, h, b, d); /* 実行アドレス、レジスタ値を渡してAレジスタの値が関数値として帰る */ 〈〈使用方法〉〉 あらかじめレジスタに対応する変数を確保します。CYフラグ用にも確保することに注目してください。 svcref(svcnumber, ACC変数のアドレス, BC, DE, HL, CY) ACC以降のレジスタは、すべて変数のアドレスを渡します。ここでピィーンときたあなたはかしこひ。各レジスタの結果値はその変数に返ります。 SVCREFはザイログ表記で書かれていますが、これをBDSCのリンク形式に変換するには特別なツールが必要です。(恐怖のインテル表記ならばそのままBDSCのCASMが使用できますが、わたくしはZCASMをいちまんえんも出して買ったのでした。) おしまひ |
||
|
※1987年の記事
|
||