aki_iic’s blog

己の欲せざる処人に施す事無かれ、狂人の真似するは即ち狂人なり

Motorola MC6800(その2)

 今日はとんでもなく暑い日で予想最高気温34℃の日が続くそうで意識高い系の環境活動家(自称含む)さんはこの猛暑に省エネ(たかが電気、でしたっけ?黄色い魔法楽団のお爺さん:)はきっと魔法の力で猛暑を乗り切られるのでしょう(マスクしながら)。。。本当早く原発再稼働しないと国が滅びますなぁ。関西(九州含む)原発稼働率が高いのは偶然では無い気がする。邪推するに小池百合子よりは維新の大阪都知事(わざと間違えてます)の方がまともであったという事だろうか。それとも江戸の末裔は武士は食わねど高楊枝なのかなぁ(皮肉)。。。

----------------------------------------------------------------------------------------------------------------------

(前回からの続き)

3.I/O拡張

 400KhzではあるがM6800CPU(Motorola的にはMPUだが意味は同じ。反面MCUはMicroComputerUnitだからシングルチップマイコン和製英語ではワンチップマイコン)がそれに相当する。分かりにくいがアフターバーナーとオーグメンターとリヒートのようなもの(どれも意味は同じ)という事か)が安定して動作するようになったので早速I/Oボードを松本さんの本を参考に製作した。同書では確かSSI-IOボードと称していたが8ビットDFFが高かったので4ビットの4000シリーズ(型番忘れた)を2個使って8ビット出力ポートのボードを手配線で製作した(以後全て手配線なので適時省略)。まあこれは練習のようなもので実用性は皆無だったので次に当時トラ技を購入するようになって(学生時代の友達の影響が大きい)秋葉原の亜土電子の存在を知る。以後の通販は亜土電子が主体で場合によって若松だったり鈴商だったり千石だったりと20世紀末に秋葉原電子街の有名処に注文する様になった。ああそうだ現役超有名な秋月電子信越電子通商から社号変更したばかりで(信越電子と広告には記載されていた気がする))を忘れる訳には行かない。そこで製作したIOボード(松本吉彦さんの書で言う処のLSI-IOボード)をベースにして:

・MC6821 PIAx1 8ビットx2+ハンドシェークポート

・MC6850 ACIAx1 UART、簡易モデム制御(CTS,DCD,CTRのみ)付

・グルーロジック CMOSは卒業してLSTTLで構成する

・カセットインタフェース 松本さんの本を参考にして110ボーのトーンバーストのカセットインタフェースを小基板に製作しIOボードとケーブルで接続。これはIOボードを汎化したくて余計な回路を搭載したくなかったから。

 な構成であった。纏めると

・MC6821 PIAx1

・MC6850 ACIAx1

 ・110ボーのトーンバーストカセットインタフェース

 であった。この中で最も役立ったのはカセットインタフェースであってIPL(BootstrapLoaderとも)をトグルスイッチの手動DMAで打ち込んでプログラムは110ボー(桁間違っていません。百十ボーです。TK80と同じぐらいの転送速度)でのんびりカセットテープからプログラムをロードしていた。かような事情から電源を切るには勇気(RAM上のプログラムが消失するので)が入るが高価であったCMOS RAMでバッテリバックアップする気は全く無かった(この時期には若さ故か二進法でトグルSWから機械語を二進数でパチパチ入力するのも結構速く行えるようになっていた)のでEPROMライタを製作(これも松本吉彦さんのトラ技の2716プログラマを参照に上記PIAではなくポート数の関係で8255をLS00でインタフェースして接続)する迄パチパチやってたのでした。今から思えば気の遠くなるような話だが当時はそれしか方法が無かったし学生で時間と気力(本件に関するのみ)だけはあったのでこつこつやっておりました。

4.CRTディスプレイインタフェースボード

 廣済堂のRAM誌でΛ-1の記事にMC6847VDG+MC1372を用いてCRTディスプレイを製作する記事が記載されたのでそれを参考にしてVideo RAMボードを製作。基板は亜土電子のNo.807(先のIOボードはNo.801)を使って44ピンから56ピンに進化して接続は上位互換を意識して松本吉彦さんの本のカードピンを参考にして決めて行った。画面に文字が出せるのは感動的で動作させる為に徹夜した記憶がある(夏休みに田舎で製作したので時間も無かった為もあるが当時の私には今の私には欠乏している熱意だけはあったように記憶している)。構成は:

・MC6847VDG 当時よく使われたチップで元々はTVゲームか簡易表示機用にMotorolaが開発したと思しきチップでキャラクタジェネレータと簡易ながらグラフィックモードも持っていた優れもので今でも若松で中古品が入手可能。古くは初代のNEC PC6001にも採用された当時としては結構知名度の高かったチップで4千円以上した記憶がある。当時秋月でS68047という似た仕様のチップが割安で販売されていたが確実に動作させる為にオリジナルのMC6847を亜土電子に発注。

・MC1372 愛称は無かった気がするがVDGが出力する映像信号をNTSCビデオカラー(疑似)に変換する為のモジュレータ。東光の専用コイルでTVの2ch(アナログテレビ放送時代のLowBandの2chの事でネットのゴミサイトの事ではありません)に変換・出力してTVに表示する。当時はゲーム機の元祖のテレビゲーム(死語)はこの形態を取っていた。

・MC6821PIA VDGはモード設定に6ビットぐらい必要だったのでPIAをボードに搭載して使用した。余ったポートは後にキーボードインタフェースに使用

・VRAM 2114x2の1KBで32x16文字のテキストVRAMを構成し128x64ぐらいの2値グラフィックモードとカラー6色ぐらいのセミグラフィックモードもサポートしていた。最大6KB迄VDGはサポートし256x192のグラフィックが実現可能だがグラフィックどころかテキスト表示も当時は難事業であったので最小構成の1KBを選択。これはRAM誌の製作例からの引用

・グルーロジック LS30等当時は一般的になっていた74LSシリーズを多用。まあ当時はステートマシン設計出来なかったのでデコーダ/インタフェース変化用のランダムロジックが主

 纏めると:

・MC6847VDG 32x16テキストモード主体

 ・MC1372 RFモジュレータ

 ・VRAM 2114x2 1KB

・MC6821PIAx1 VDGモード設定用、キーボード接続(後に)

 となる。

 やはりCRT表示が出来るようになるのは当時としては感動もので松本吉彦さんの本に記載されていたモニタプログラムをVDG用に移植してモニタプログラム(通称松本モニタ)が動くようになった。これは松本さんがMotorolaのMIKBUGを参考(当時はソースリストが公開されていた)にして開発・発表されていたものでこれが私のM6800マイコンライフの原点とも言える(ああ懐かしや)。このモニタプログラムを上記カセットインタフェースでテープに記憶しトグルSWを手動でパチパチIPL入力してモニタプログラムを読込、それを使ってプログラムを作ったりしていたので一度使い始めるとそうそう電源を落とさなくなったのは当然である(大学の寮生活だったので24時間通電でも何ら問題は無かった。寮費に電気代も含まれていたので)。

4.EPROMプログラマ

 この頃はトラ技は愛読書となりネットなど無かった時代なので本屋通いをしてマイコン関係の情報を漁るようになっていたがやはりトラ技の松本吉彦さんの記事は別格で当時連載されていた8255を用いた2716プログラマの記事を参考にして上記モニタプログラム他をEPROMに書き込める様にになりIPL入力作業から開放された。当時のEPROMは紫外線消去型で4wの殺菌灯と安定器をアルミシャーシに組み込んでEPROMイレーサーを自作したのは当時の風景でもあった。

www.st.rim.or.jp

 2716は5V単一動作する初代のEPROMでプログラムは26Vの高圧を必要とするが松本吉彦さんの記事で今でも現役なTL497Aで昇圧するので比較的簡単な構成でEPROMプログラマを製作出来た。このEPROMライタは2716→2732→2732A→2764へと進化する事になる。

5.DRAMボード

 MC6800CPU(0.4Mhz),1KB RAM、1KB VRAM、PIAx1,ACIAx1の3ボード構成

・MC6800CPUボード

・MC6821,6850IOボード

・MC6847VDGボード

 となったので44ピン、56ピンコネクタを繋ぐバス構成を手配線で行ってコンピュータ的構成になった。基板を作る馬力は無かったので根気よく44x3のバスを手配線した(当時は根気と気力と暇だけはあったので)。ここまで来ると筐体(当時はシェルフとかエンクロージャとか呼ばれていた)が欲しくなって亜土電子にNo.807x4収納可能なシェルフを注文して上記構成を組込む事にした。いわゆるマイコンシステム風な風貌に近づいて来た訳である(自称)。この様な構成を目指した理由は当時ブームになっていたTinyBasicを動かす環境を構築する為に当時としては大容量な16Kbit DRAM(+5V,+12V、−5Vを必要とする4116系のDRAM、単位は16Kビットで合ってます)を使った16KBの大容量(爆)メモリを構築したかった為である。

www.st.rim.or.jp

 この頃はトラ技とインタフェース誌は必読雑誌だったのでIF誌の記事を見てM6800用のDRAMコントローラであるMC3480+MC3242を用いて4116系DRAMは秋月から調達してNo.807基板にDRAMボードを1本づつ手配線で最終的には24個のDRAMを配線して48KBの大容量(爆)なDRAMを構成するようになった。

www.st.rim.or.jp

 この頃(というかLSI-IOボードの頃から)はホルマル線というかAWG28,30のポリウレタン線を使用してDRAMのアドレス、データ、ストローブ線を根気良く配線していったものである(今でも動作したのが不思議な程)。無論、一発で動作する筈もなく試行錯誤(大半は配線ミスか不良)を繰り返し、DRAMテスト用のプログラム(正常にリフレッシュが機能しているか、データ化けが発生していないか)を書いて数時間なり連続動作させて安定性を確認したものである。ハードウェアの安定性が確認されたら次はソフトウェアとなって

6.Tinybasic

 となる。当時は電大版TinybasicがMC6800系では一般的で例のRAM誌のΛ-1単行本(マイコン手作り塾とかいう書名の分厚い本)の最終章に電大版TinyBasicのアセンブルリストが掲載されたのでそれを機械語モニタで入力して適時カセットに(110bpsで)セーブして実行した。当時はStarTrekをTinyBasicで動かすのが流行でブルーバックスかどこかで電大版TinyBasic用のStarTrekのソースを打ち込んでテキストベースの古典的なStarTrekゲームを動かして遊んだものである。現実として私のMC6800マイコンで動作した最大級の「アプリケーションプログラム」であり当時はそんなものだったのではと記憶している。

7.MC6802CPUボード

 400Khzで動かすのも不満が出てMC6800とソフト互換のMC6802(亜土電子から購入したのは当時のセカンドソースだったHD6802P)を使ってNo.807にMC6802ボードを製作した。構成は:

・MC6802MPU 1Mhz、RAM128バイト付だがDRAMの48KBと被るので無効化(RE→False)

・RAM 2114x2 1KB、これはモニタワーク、スタック領域用であるがDRAMボードが無くても(不安定・故障しても)動作出来る用、$Fxxx領域にマッピングしていた

www.st.rim.or.jp

・EPROM 2716x1、2732x3 EPROMが多いのはモニタプログラムとTinyBasic、逆アセンブラ、EPROMプログラマをEPROMに書き込んでコマンド1つで動作させる様にした為でその意味ではROMベースのシステムとも言えるが先の48KB DRAMと領域重複するアドレス($8000〜$BFFF)はスイッチでDRAM領域を無効化/有効可出来る様に設計した(デコーダ回路を工夫しただけ)。

 ここまで来ると機械語ベースではあるがEPROM書込み器も有るのでチープながらも開発システム(当時の学生の自称故、ご容赦を)っぽくなって来たので他のマイコン開発(具体的にはMC(HD)6809)に進む事になる(続く)。