MZ-80 パソコン開発物語

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

過去の投稿日別表示

[ リスト | 詳細 ]

全1ページ

[1]

MZ80レプリカ (4)

イメージ 1

今の所、作り上げたBASICの構造で、命令語処理を追加していますが・・、安定に動作しています。
ブログに記載するには 容量的に制限されますが、MZ-Main.cならば小さいので、投稿することにしました。

僕は、ラジオ少年に始まる根っからのハード系だけど、約30年前BASICインタプリタ製作を、安請け合いして
悩みながら、〇〇〇〇の助けを得て作ったので、システム理論など学問的な裏付けはないよなぁ〜。 
今回、MZ80レプリカ製作の話があり、以前は、全アセンブラで書きましでしたが、当時を思い出しながら、
C言語で、MZイメージのBASICインタプリタを作ろうと 、チャレンジしています。(・・に 鞭 打って )  
プロの方々から、見れば 下手なソフト?かも知れませんが・・。ご容赦ください。 あえて、投稿するのは、
若い技術者達が『 あんな オジンでもやっている・・、じゃ 僕も・・』と発奮してくれる事を 期待しての事です。

では、MZ-Main.cファイルを、簡単に、注釈すると・・。 今回 かなり コメントつきで〜す。
5行〜15行は、TI$用の割り込み。 H8特有のレジスタのビット操作は、一度読み出して、書き込まないと 
誤動作します。 今は、19行〜21行を無効にして、TI$は、動作させていません・・割り込み禁止状態です。

18行のInitializeMemory()は、MemManage.cファイルの関数で、データエリアの初期化で、すべての区分を
初期化する。初期化エリアの状態は、各々13個の番地ポインタとセパレータ(0x0000)が、有るだけの状態。

24行は、エラー発生時のジャンプ先ラベルです。  ( 間違いを起こした時の、駆け込み寺か・・??)
26行のRestoreSystem()は、 Text、数値、ストリング・・の変数以外を 初期化し,再起動します。

28行〜40行の whileのループ内は、 エラーが起きない限り、システムが 外へ飛び出す事は有りません。
29行のGetTextLine()は、キーボードからの入力。
30行のTextPreprocess()は、テキストの初期の処理、行番号とテキスト文(ストリング)に分離します。
33行 行番号TextNumberが、0か判別( 0は 行番号が存在しない意味)
34行 StoreTextLine()は、、データエリアのLIST領域に格納、行番号のみの場合、テキスト行の抹消。
37行 ExecuteCommand()は、命令の即 実行。(今は、LIST、RUN、PRINT、LET)が 動作しています。
41行 エラー情報出力、エラー処理へJUMP    (取り合えず、駆け込み寺へ・・??)
     (各処理関数は、ERR≠0を見つけたら、処理作業を中止し RETURNする構造に作ってある。)

MZ-Main.cファイルは これだけです。Main関数は、組織で例えればピラミッドの頂点で指示系統のトップ、
会社で言えば 会社の社長かな・・。  有能なMain社長は、明快な判断、的確な処理命令を出します。
バカMain社長は、社長の仕事でも無いのに、ダラダラと細かい事をして、曖昧な処理命令をだし、混乱状態・・。
 
システムは組織論で・・、作業を最適化し、分類し、論理の流れ・・をしっかり考えて、構成すると 良いね。
システムは 分かり易く。   簡単明瞭・・、シンプル・イズ・ベストを 旨としよう。

     < つづく > 

 MZ80レプリカ製作は連載物です。 最初のページ(1)から ご覧下さい。
  MZ80レプリカ製作(1)

開く トラックバック(1)

全1ページ

[1]

[PR]お得情報

数量限定!イオンおまとめ企画
「無料お試しクーポン」か
「値引きクーポン」が必ず当たる!
ふるさと納税サイト『さとふる』
実質2000円で特産品がお手元に
11/30までキャンペーン実施中!

その他のキャンペーン


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

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

みんなの更新記事