もしかしたら80系を学んだから

今に成って、80系を学んで、構造化プログラミング技法をMasterできたから単純な68系がお勧めと言っているのかも知れません。確かに68系に似たCASLと言う情報処理検定用疑似アセンブラもあります。

単純な疑似アセンブラでは、構造化プログラミング技法は難しいでしょう。ある意味、限られていますが、レジスタ群の使い方によって、かなり大きな構造化機構のシステムを作り出す事が出来る様になったとも言えます。その上で、レジスタ群という、限りあるメモリ領域を使って、プログラミングをする意味は大きな利点があったと言えます。68系でも限りある、メモリ領域を、CPUのたいせわつな動きの為に、作っておき、プログラミングをするという、特別な形を取らないと、構造化プログラミングは難しいでしょう。

68系は、CPUのControl-LINEや、Data-LINE、Address-LINEの信号をロジアナを返し、Programと照らし合わせて、見る事により、CPUの動きを捉える事は、80系での推測でしか無い、信号の動きとは、違って、確かな動きに近い、CPUの動きを捉える事は出来ます。まして、今時、低速な1[MHz]と言うCPUを選んだ理由は、今時、8Bit部品の高速な部品が、手に入らなく成りつつある中、昔の部品の在庫を使うしか無いと思っています。68系に期待したのは、START-Addressが、0FFFEh+0FFFFhにあった為です。僕の想像のしすぎでした。割り込みに対して、Z80-Mode2割り込みのような割り込みが、16Levelくらいはあるだろうと推測しましたが、昔の事で、ハード的には4Levelの割り込みとソフトウェア割り込み3Levelと決められている事に気付きました。

ある意味、失望した感じも受けましたが、初めて、CPUに触れる人達にとって、単純な事が、一番重要ですが、68系は、絶対番地へのジャンプ命令で無く、16Bitでも相対ジャンプ命令しかないので、電卓は必要ですが、CPUと言う物を知る上で、『2の補数』の勉強にも成るだろうと思います。『2の補数』は、引き算を足し算で行う為、必要な手段で、最もCPUらしい動きをしているのでは無いかとも言えます。もっと割り込み機能が優れていると良いのかな・・・、それは、いくらでも、Software的に、作り出す事は可能で、80系での8Level割り込みに近い事も、6821が有れば、出来るのでは無いかと思います。

ある意味、絶対番地へのジャンプ命令も一つですが、相対ジャンプ命令だと、構造化プログラミングも難しいかも知れません。ある意味絶対ジャンプ命令の少ない68系で、構造化プログラミング気泡を生み出せるのかは、僕も課題です。どういうやり方が適しているのか、何年かかかりますが、僕もチャレンジです。今のところ、まず、Z80-CPU 8[MHz]のワンボードマイコンを作り、それからのStepで、6809のワンボードも作ってみようかと思っています。68系の命令も、見よう見まねで、学生時代に作った、自然に出来ていた、構造化プログラミング技法の元が、一番始めに出来ていたのが、僕のProgrammingの特徴でした。その後、CP/M-80に夢中になりM80始め、完全解読不可能な、Relocatable-Objectが可能でした。未だF80の構造の鍵は解けないでしょう。また、M80自体古いのですが、僕は完全だと思っています。ROM火曜には向いていませんが・・・。また、後にROM化用、アブソリュードAssemblerも作りました。そのとき、6800用、6803用、6809用Assemblerも作っています。Linkerは、共通の物を使います。僕が作れたのだから、情報処理工学を専門に勉強した学生が、出来ないはずは無いと思っています。

作り方などは、僕のやり方を教える事はしません。あくまでも『自分で作れ』です。まずCPUの原理を学ぶ事がSTARTなのか、Assemblerプログラムを使って、システムを構築する事が先かは、Hardwareを学ぶ人、Softwareを学ぶ人、それぞれですが、その両方を、組んでいくとなると、まずは、簡単なMonitorから始まり、次に、基本ソフトを学ぶ形になりますね。どのようなMonitorでも、簡単なBIOSは作らなければならないです。20文字4桁のLCDBIOSも必要になりますし、テンキー入力のBIOSも必要になります。

僕は、7セグはあまりお勧めしません。出来れば始めから、ASCII-Codeになれて欲しいからです。LCDを動かせる様になれば、色々と都合が良いです。

未だ、単純な6809が良いのかちょっと複雑な8085Aが良いのか考え物です。

Z80は、種類が全く違うCPUです。