irukaです。
retrofさんの掲示板から参りました。
少しだけ昔話を書いてみます。
私が最初にマイコンにはまったのは高3のころです。
故宮永好道先生のトラ技の記事でSC/MP-IIを使ったマイコン
の記事がありました。これを読んでいたら無性に作りたくなって、当時のI/Oみたいな雑誌の広告をたよりにSC/MP-IIと
コンボChip(128Byte RAM+I/O)を買いました。
組み立てたボードは10cm x 10cm程度のユニバーサル基板に
スライドSWでアドレス8bit+データ8bitのDMA書き込みです。
電源は単三x4本の乾電池駆動でした。
表示も8bit分のLED(DMAメモリー読み出し)と7segLED x 1桁
(こちらはコンボChipのI/Oに繋ぎました)
その後、2114(4bitx1024word)のようなSRAMが売り出されたのでメモリー増設して、円周率を200桁程度求めてみたり、
オーディオカセットインターフェースのようなものを作って
(ソフトウェア処理)ロードセーブとか、やってました。
残念なことにその筐体も、SC/MP-IIチップももう残っていません。
21世紀になってからAVRマイコンに手を出しまして、Atmelの
40pinのマイコン(ATmega644とか)をプログラムできるように
なりましたので、AVRでSC/MPをエミュってみたいな、と考えております。
以下の、AVRで8080(cp/m-80)をエミュってらっしゃる、
とよしまさんの作品に啓発された感じです。
http://code.google.com/p/cp-mega88/
それでは。今後ともよろしくお願いします。
irukaさん、こんばんは、ようこそいらっしゃいました。
SC/MP-II の文字を見て、心の底から「何もかも懐かしい」と思いました。
8080や6800に比べると、ややマイノリティー(ご免なさい)的なCPUでしたけど、I/Oやトラ技にも
毎月のように広告が出てましたねー。
私は、SC/MP-II を勝手に「スキャンプ・ツー」と当て読みしておりました。
それにSC/MP-II の素直なアーキテクチャは、凄く好感が持てました。
irukaさんも色々増設されたり、プログラミングも活発にされてたんですねぇ。
SC/MP-II には、VTL( Very Tiny Language )的なモノは何かございましたか?
モニタROMに1パスのアセンブラが内蔵されていた様な記憶があるのですが?
MZ-80とSC/MP-II の2台持ちだったんですね。
私もAVRは、大好きです。5V電源だし、開発環境も充実しているし、シリーズによって、色々特徴を持ったチップだし。
>AVRでSC/MPをエミュってみたいな、と考えております。
わー、それイイですね! エミュでも、当時のSC/MP-II と等速出るんじゃないですか?!
これからも、よろしくお願いします〜!
管理人様
コメントありがとうございます。
当時の2114 x 2 (2kB)でもGAMEインタプリタとかTinyBASIC風言語がぎりぎり入りそうですが、SC/MP-IIの特殊なアーキテクチャゆえ高級言語実装は早々に諦めてZ80に転向しました。
商用ではApple-IIのマネコンみたいなOrangeという名前の
コンピュータがありまして、Orange-Basicという言語は
あったみたいですが、そのほかにはSC/MP-IIに実装された
BASIC系言語を知りません。
Z80のほうですが、CPUボードは自作して当時の6847みたい
なVDPチップでTV出力して、ファームはMZ-80Kを解析して
互換機のようなものにしておりました。(MZ-80KのBASICを
走らせていました)その当時もSHARP BASICの改造は流行って
いたようです。
>エミュでも、当時のSC/MP-II と等速出るんじゃないですか?!
軽く出ますね。SC/MP-IIはN-MOSで4MHzクロックなんですが、
内部4分周(まるでPIC)な上に、中身がマイクロプログラム方式
なもんですから、LD命令が18cycle(4MHzで数えると72cycle)
も掛かります。
なので、ATmega644のI/Oの先にSRAMぶら下げてそこから
フェッチしても余裕だと思います。
(中身もマイクロプログラムですし)
こんばんは。お邪魔します。
昔話の続きです。
*パチパチスイッチでIPL入力
その昔、ミニコンピュータの時代がありました。(HITAC-10IIとかです)
当時ミニコンには現代で言うところの2732とか2764の
ようなEEPROMが実装されておりませんでした。(インテルがEEPROMを発明したのはずっと後です)
なので、最初の最初にはDMA(2進パチパチスイッチ)でプログラムを入力する必要がありました。
IPL(イニシャルプログラムローダー)が起動すると次に紙テープリーダーのようなものからOSやらFORTRANのような処理系を読ませるのです。現代のパソコンで言えばいわば
ハードディスクのセクタ0に書かれたブートセクターのようなものでした。
私の自作したSC/MPやZ80のマイコンにもROMが実装されておりませんでした。理由は、インテルの発明が間に合わなかった、からではなくて、単にROMライターを持っていないなかったからです。
ROMライターを買うお金が無いので、工夫でカバーします。
5101とか6116のようなCMOSタイプのSRAM(4bit-dataなので2個買います)をゼロ番地付近に実装して
乾電池でバックアップしておくのです。
こうすることでROMを実装したのと同じ効果が得られます。
しかもARMのFlashROMのようにIAP(In Application Programing)で自己書き換えも可能です。普段は暴走で飛ばないようにライトプロテクトをONにしておきます。
ところで、このCMOSのSRAMにどうやってプログラム
を書き込むのでしょうか?
答えは、やはり、パチパチスイッチの登場です。
CPUをHALTさせておいて、SRAMのアドレスバスと
データバスに外部からスイッチでHi/Loを与えておいて、WE(書き込み)信号をON/OFFすることで直接SRAMにデータを
書き込んでいきます。
ただし、この方法で長いプログラムを書き込むと指が痛くなるという欠点があります。ですので、IPLは極力短くなるように工夫するわけです。
私の場合は、IPLで書き込むプログラムは紙テープリーダー
の読み取りソフトではなくて、簡単な16進モニタでした。
(NECのTK−80というi8080ラーニングキットについているような16進キーボードと7SEGの8桁LEDを使って、もっと手軽に16進の打ち込みが出来るようにするモニタプログラムを入れていました。)
TK−80のLED点灯はDMA処理で行なっていたようですが、私が作ったワンボードマイコンは8255のようなものの先に
割り付けたLEDのダイナミック点灯なのでソフトウェアによるダイナミック点灯と、(同時並行で行なう)16進キーボードのソフトスキャンが書かれていました。
次に、その16進LEDモニタを使って、カセットテープを使ったバイナリーローダーとセーバーを書いていたりするのですが、それはまた別のおはなしということで。
- YY-BOARD -