aki_iic’s blog

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

Motorola MC6800/MC6809(その4)

 その3で書き終えたかと思ったがCRTC関連を書き漏らしてたのに気付きその4として追補します。

(前回からの続き)

10.HD46505

 後にIBM PC(初代)にも採用された日立製作所(現Renesas)の超有名なCRTコントローラである。当時のCRTCはラインバッファ・DMA転送型のuPD3301、intel8275とVRAM型のMC6847、HD46505が安価な外販品としては入手が容易で当時常用してた亜土電子から入手出来た。そういえば当時は銀行振込は窓口業務だったので手間の掛かる郵便振込は使用せず現金書留を使っていた気がする。なので無駄にハンコを押す現金書留文化に慣れていた為か最近話題のハンコ廃止文化も「ふう〜ん。改革すべき根源は官僚組織:特に勘違い会計部門の財務省:は他にあるのに官僚って政治家をあやつり人形にしてガス抜きプレイが得意なのは伝統芸能だな〜」と思ったりもする。抜くべきモノは他にも沢山あるだろうにね(不健全な意味ではなく)。

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

www.st.rim.or.jp

 発端はやはりトラ技の記事でMC6847のVDGには満足していたがアセンブラを使うようになると40x25、出来れば80x25文字表示のCRTディスプレイボードが欲しくなってくる。この頃にはRFモジュレータではなくTP14というテストポイントからコンポジットビデオ入力するTV改造記事が掲載される様になり寮内に捨てられていたモノクロTVを拾ってきてTP14端子を見つけてコンポジットビデオ入力用のピンジャックを取り付けた。これで80x25の高解像度(当時)へのディスプレイ対応完了(笑)。

 HD46505はMotorolaでもMC6845の名でクロスセカンドソース供給された(当時はMotorola半導体セクタの開発力も限られておりHD46504(MC6844) DMAC、そして本HD46505(MC6845) CRTC、後にはMC68450 DMACも日立が開発したチップをMotorolaがセカンドソース供給していたのは古き善き美しき思ひ出。さてHD46505はキャラクタジェネレータをMC6847のように内蔵してはいないのでキャラクタジェネレータから準備する必要がある。当時はキャラクタジェネレータという専用ROMが販売されていたが2716EPROMを掛ける環境が既にあったのでどこからか忘れたが8x8のANK(Alpha Numerikc Kana)フォントデータを入手或いはダンプリストを打ち込んで2716EPROMをキャラジェネとして使用した。HD46505は事実上CRTCカウンタとCGアクセス用のタイミングジェネレータだけでCPUとのVRAMインタフェースやCGとのPISO(Paralle In Serial Out)俗に言うシフトレジスタは内蔵しておらずそれらはユーザが作成したいビデオフォーマットに合わせて設計する必要があった。とはいえステートマシンを設計するではなく単にPISOするビット数(8ビットCGなのでLS166の如き8→1のPISO)で構成すれば良い。これまたトラ技の記事を参考にしてMC6800/6809のバス構成(当時は80系のバスを非同期バス、6800系のバスをE(∮2)クロックに同期するので同期バスと呼ばれていた)を活用したサイクルスチールDMAと呼ばれるCRTCのビデオアクセスとCPUからのVRAMアクセスをEクロックのHigh区間はCPU、Low区間をCRTCアクセスとしてCRTCとCPUがVRAMをアクセス競合を避ける為の調停回路の設計が不要でこれはApple][も含めた6800系同期バスの利点でもあった(ご承知の通りApple][ではCRTCをDRAMコントローラとしても利用していた:当時としてはよく見られた設計:のでDRAMは過剰にリフレッシュされる事になりApple][のDRAMは熱くなる傾向にあったと記憶している)のでそれにあやかる意図もあった。構成を纏めると:

・HD46505 CRTC

 ・VRAM 2114x4 2KB 80x25=2000文字

 ・CG 2716x1 ANKのみ

 ・Dot clock 16Mhz

 な構成であった。1MhzのCPUクロックで80x25文字を表示させる為に高速のSRAM(2114の高速バージョン)で500ns以内に2個のSRAMをパラで読み取る?とか言ったトリックを使っていた不確かな記憶も。。。おまけに40x25もサポートしたかったのでDot clockを8Mhzに切り替える回路も組み込んで40x25、80x25の表示フォーマットをサポートした記憶がある。ドットクロックとCPUのEクロックとの位相関係等妖しい面も少なからずあったが一品で動作したので当時はそれで由として以後はVDGをバックアップとし(モニタROMも書き換え)HD46505ベースのVRAMで構成するようになった。ここまで来るとポンコツ手作りではあるけれど80x25のモノクロディスプレイに実用的な表示を行える様になったので6809セルフアセンブラでの開発が随分捗った記憶がある。

以上