MZ-80 パソコン開発物語

今だから話せる、パソコン開発記録を連載します。 感想をコメントに残して頂けたら 嬉しい・・。

全体表示

[ リスト ]

BASIC言語 追加版

イメージ 1

MZBASIC デバッグ中ですが、タイマー増強と論理演算子を追加しました。
段々 制御コンピュータみたいに なって来た。
Spirit of MZ80の範囲内か?

閉じる コメント(5)

顔アイコン

中西御大

非常に特徴のあるBASICになってきて、ワクワクしています。この言語仕様の中で割り込みを自然に処理しようというチャレンジに期待しています。

ON INTERRUPT(割り込み要因) GOTO(or GOSUB) 行番号

みたいな言語仕様の拡張は可能でしょうか。リアルタイム性を保証しにくいインタプリタ系言語では難しいですか?

2010/3/27(土) 午後 7:48 [ かの ]

顔アイコン

コメントありがとう。

MZBASICは、ハード面で3レベルの多重割り込み処理をしています。
最優先はWAVE再生データ要求(11.025KHz毎)、第二優先は、時間・タイマー関係(2KHz毎)、第三は、WAVEデータブロック(512bytes)をSDからの読み出し要求(約50msec毎)になっています。

従って、最も厳しい状況は、ファイル処理でSDにデータを書き込んでいる時に、上記3要求が重なった場合に起こります。

これ以外に、ターミナルからの入力処理は、RS232Cハード割り込みで、バッファーに溜め込み、CR,LF受信した時、受信文を実行しているインストラクションの間に、BASICソフト割り込みとして、構文解釈処理をしています。
従って for next, goto で無限ループに入っても、ターミナルのESCキーでbreakを送信すると、無限ループから脱出します。

2010/3/27(土) 午後 9:32 [ nag*sa_*ei ]

顔アイコン

500文字制限の為 後続します

外部要因割り込みは、I2Cからの割り込みでやりたいと思っています。I2C intrrupt信号線(?)を準備し、I2Cスレイブからの読み出し要求を実行する。今のRS232Cの割り込みと同様に・・・

BASIC処理ソフトは、プログラムのインストラクション間に緊急・別のインストラクションを挟み込み実行させるのが可能な構造です。
今もソフト割り込みで使っています。gosubインストラクションは、メモリの許す限り多重コールが可能ですし・・・。

2010/3/27(土) 午後 9:34 [ nag*sa_*ei ]

顔アイコン

中西御大

原稿の処理内容、外部要因割り込みの可能性について、よくわかりました。楽しみがまたひとつ増えました。

2010/3/28(日) 午後 8:48 [ かの ]

顔アイコン

すみません。「現行の」の間違いです。^_^;

2010/3/28(日) 午後 8:48 [ かの ]


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事