まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

MachiKania Type M

 PIC32MXを採用したマイコンボード、MachiKania Type Mを組み立ててみた。

 オレンジピコ基板と部品一式を扱っている。キットにはDIP変換基板にはんだ付けされたブートローダ書き込み済のPIC32MXが同梱されているが、今回はTQFPのはんだ付けに挑戦したかったので秋月電子から PICマイコン PIC32MX370F512HT-I/PTを別途購入。あとはmicroSDカードが必要。

 まずはハンダブリッジを気にせずはんだ付けし、吸い取り線でブリッジを除去。
2018PIC32MX-1

 が、ちゃんとすべてはんだ付けされているか気になるのでヒートガンであぶってはんだを溶かし、しっかりと付くことを期待する。1800W、10cm高さで2分、5cm高さで1分あぶる。妥当かどうか自信はないがどうやらよさそう。
2018PIC32MX-2

 次は他の部品の取り付けだけれども、キット付属のセラミックコンデンサは基板のパターンよりも幅が広いので足をリフォームしないといけない。面倒なので0.1μF品は手持ちのものを使用した。
2018machikania-c

 他の注意点はLEDの電流制限抵抗R12の値が330Ω→1kΩになっているくらい。

 ブートローダはPicKit3で書き込み。その他必要なファイルをmicroSDカードに書き込んで完成。
2018MachiKaniatypeM

 基板上の半固定抵抗は音量調整。ありあまる端子を利用してArduinoシールド互換のコネクタが用意されている。電源を投入するといろんなサンプルやゲームをmicroSDカードから呼び出して遊ぶことができる。

 せっかくなので浮動小数点演算を生かしたプログラムを書いて遊んでみた。BASICで書くにはPS/2キーボードが必要。https://rosettacode.org/wiki/Mandelbrot_set#Processingよりウンウンうなりながら移植。


2018machikaniamandel

 変数がA-Zしか使えないと思いこんでいたので読みづらいですが、作者の@KenKenMkIISRさんからUSEVARで6文字までの変数名が宣言できることを教えていただきました。


 というわけでTQFPはんだ付けの実績解除と80年代にBASICで遊んだ感覚を思い出しました。カラーが表示できるのは良いですね。


 ↓ Kindleunlimited対象

PET2001のレストア(2) 電源調査

 再度電源を投入してボード上の電源電圧を測定したら5Vのはずが4.6V程度とおかしいので、タンタルコンデンサすべてと電源ラインの電解コンデンサを交換する。
PETPOWERLINE

 交換したコンデンサの容量を測定したが特に抜けてはいなかった。電源コネクタの接触不良だったようだ。
 クロック周りを観測。
・MOS6502 pin39(φ2 out) OK → クロックジェネレータからCPUまではOK
・PIA/VIA pin25(φ2 in) OK → 主要なLSIへのクロック供給OK
・VSYNC/HSYNC/VIDEO それっぽい波形は出ている
 これで何も表示されないのはCRT部分が動いていない可能性がある。CRTは高電圧を扱うがうかつにさわりたくはないので調べてみた。

PET2001の回路図は以下にある。先程のロジックボード上の電源まわりを抜き出した図もここから。

これによるとCRT基板に供給されるAC17VからDC12Vを作り、そこからすべての高電圧(+85V,-30V,+10KV)を生成している。電源トランスはCRT基板とロジックボードそれぞれにAC17Vを供給しているようだ。ただしこのあたりの図面はないので実物をたどって調べてみた。(お断り:正確ではないかもしれません)

2018PET2001power

 TAPとあるのは電源トランス端子に書いてある番号。[8][7]はAC17VでCRT基板に行き、7812でDC12V1Aを生成している。
 [6][5][4]は中点のあるAC17Vで、コネクタJ8(1)(5)を経由してロジックボード上で整流されJ8(4)でいったん外にでる。ここで平滑コンデンサに接続され、J8(2)(3)でふたたびロジックボードに入り7805の4個並列でDC5V4Aが生成される。

 ということは重くてかさばる電源トランスと平滑コンデンサを撤去して現代のスイッチング電源を代わりに入れることができそうだ。そうする安定した電力を供給でき、発熱も抑えられるのではないだろうか。
 まずはCRT基板に直接DC12V1Aを供給してみた。基板上の7812のpin3を上げて12VラインにスイッチングACアダプタの出力をはんだ付けする。
2018PET2001CRT

 この作業にはCRT部分の分解が必要。PET2001のCRTユニットはナット4個で固定されているのでそれを外す。CRT基板は背面のパネルを外し、スペーサで固定されている手前の二箇所のネジを外し、奥の方にある二箇所の固定ピンを上げる(写真左下のもの)。CRTのソケットを慎重に外す。これでも偏向コイルへの配線はつながったままだが、クッションを敷いてCRTを保護しつつ作業した。

2018PET2001CRTheater

 ACアダプタを接続して確認。CRTのヒーターが点灯した。

 今回はここまで。


ミュージック・ノン・ストップ~ア・トリビュート・トゥ・クラフトワークミュージック・ノン・ストップ~ア・トリビュート・トゥ・クラフトワーク
オムニバス ヒカシュー 中野テルヲ バッファロー・ドーター 山下康 MELT-BANANA 石野卓球

EMIミュージック・ジャパン 1998-09-22
売り上げランキング : 202869

Amazonで詳しく見る
by G-Tools


PET2001のレストア(1)

 新品のPS4とジャンクのPET2001、どちらかをくれるという話なら迷わずPET2001を選ぶ。
自腹でどちらか買うとしたらちょっと考えてからPET2001を選ぶ。

2018PET1

 固く絞った雑巾で表面を清掃したのち、手前左右に2個づつあるネジを外してオープンのところが筐体が歪んでいてかなり強引にしないと開かなかった。

 内部はこのような状態。40年前の製造ですし。
2018PET2

 基板は一箇所のみネジ止めで他はピンに刺さっているだけ。外してみた。
2018PET3


 基板(クリックで拡大)
IMGP2925

 基板は最初期のものらしい。ROMはMOS6540×7個、RAMはMOS6550×16個。それぞれ同期式のメモリ。

ドラッグストアで買えるイソプロパノールでホコリを流した。一回じゃだめで一瓶分使った。
(クリックで拡大)
IMGP2926

 さて本体だが背面にあるフューズホルダーが破損していた。元々は1.6A品らしいので1.5Aのヒューズと5×20型のヒューズホルダーをホームセンターで購入。これに交換する。
2018PET4

 左奥にある電解コンデンサとトランスを底面のナットを回して外した様子。少し狭いがこのヒューズホルダーを交換。
2018PET5

 筐体は鉄板なので新規に穴を開けるのは難しい。新しいヒューズホルダーが入るようにリーマーで削るのも大変だった。これでAC電源まわりは大丈夫なはず。

 よく見たら基板側には問題がある。7個あるROMのうち中央のものだけが逆に挿してある。同じ種類のROMが並んでいるなかで通常こういうことはない。もしかしたらこの状態で通電していて破損している可能性もあるが、とりあえず正しく挿し直す。
2018PET7

 さてコネクタを元通りに接続して通電してみる。カセットレコーダー部分からモーター音が少しして止まる。基板上の電源ラインを確認すると約3.7Vだった。
 おそらくは平滑コンデンサの容量抜けでまともに電源レギュレータが動作できない状態なので、用意しておいた電解コンデンサ6800μF25Vを並列に接続。実際は元々の電解コンデンサの端子にネジ止め。
2018PET6

 この状態で再度パワーオン。今度は5.07Vが観測できたので電源供給はひとまずOK。

 基板上にあるLEDはVIAのキースキャンをORして点灯するようなので、ROMを読んで正常に動作していれば光ると思われるが消灯したまま。先程のROMの破損があるかもしれない。また、ソケットが多いので接触不良も考えられる。

 たぶんオシロなしでできるのはここまでで、次回はクロック周りから確認していこう。



【第3類医薬品】イソプロピルアルコール50% P 500mL【第3類医薬品】イソプロピルアルコール50% P 500mL

健栄製薬 2008-04-18
売り上げランキング : 3172

Amazonで詳しく見る
by G-Tools

今さらGALを使う準備

 2018年現在でDIP品のGALを使う準備。

 PLD(Programmable Logic Device)の一種であるPAL,GALは汎用ロジックICの置き換えとして使われていた。TTL 2〜3個を1個のパッケージに収めることができ、ゲートの段数を重ねることがないのでディレイも最小、面積も有利なので主要なLSI間をつなぐGlue Logicとして主に使われていた印象。GALの場合、DIP品は端子数と内蔵FFの数から16V8、20V8、22V10がよく使われていた。しかしより集積度の高いCPLD/FPGAの登場により終息しつつある。
 で、今GALを趣味で使うのは昔のマイクロプロセッサ関連を動かせるように作ったり修理したりするのに便利そうという理由。で、開発環境が用意できるかどうかやってみた。

・石の選定
 LatticeとAtmel(Microchip)が生き残っているが現在も生産しているのはAtmel(Microchip)のみ。DigiKey提携のマルツなどで購入できる。
ATF16V8B(Microchip)

・GALライタ
 アマチュアが入手容易なMiniPro TL866シリーズはLattice/Atmelに対応している。
サポートデバイス:
Microchip(ATMEL) ATF16V8B
Lattice GAL16V8/20V8/22V10

・開発環境
ATF16V8Bの開発にはWinCUPLを使用する。PALASM、ABEL、CUPLと色々独自言語があったけど回路規模は小さいし雰囲気で使えるはず。

 ということで ATF16V8B/WinCUPL/TL866CSの組み合わせでやってみます。

・WinCUPLのインストールとコンパイル
 WinCUPL(Microchip)からダウンロードしてインストール、再起動した後にライセンスキーを入力。ライセンスキーはWebページに掲載されています。インストールディレクトリはC:\Wincupl 。

 WinCUPL起動後、メニューの[File]→[Open]から C:\Wincupl\Examples\Atmel\ADDER.PLD を開く。次に[Run]→[Device Dependent Compile]でコンパイル。([Run]のメニューはファイルを開いていないと出ません) これで同じフォルダ内にADDER.jedなどのファイルが生成される。
GAL-compile

※私のWindows10pro環境ではコンパイル後にrun-time errorが出て終了しましたが他のWindows10home、Windows7(64bit)では正常にコンパイルできました。もともとWindowsXPまでの対応なので深追いせずにあきらめましょう。

・MiniPro TL866CSによる書き込み
 MiniPro TL866CSのソフトウェアは以下よりダウンロード。ver7以降はTL866II Plus専用なので注意。

 ブランクチェック。GALはPROMと同じような感じで焼けます。
2018GAL

 ADDER.jedを指定して書き込みOK。
GAL_atf16v8b

 ということで書き込みまでOK。

 GALは組み合わせ回路のみで使うと特に悩むようなことはありません。むかし別のメーカーのでFFを含む回路を作ったときはFFのリセット後初期値が'1'でハマった記憶が。そのときもなんとなく記述して動かしたので今後もまあできるんじゃないかなあという気持ちでいきます。


高速運作TL866CSプログラマ/USBついプログラマ EPROM FLASH AVR TL866シリーズプログラマ高速運作TL866CSプログラマ/USBついプログラマ EPROM FLASH AVR TL866シリーズプログラマ

Generic
売り上げランキング : 58538

Amazonで詳しく見る
by G-Tools

SBC6303のリセット対策 - シリアルI/Fからの電流回り込み防止

 SBC6303ルーズキット、既知の問題としてパワーオンリセットがかからないことがあるというのがあるが私の環境(HD63B03RP)では再現しなかった。


 再現性を高めるために手持ちのチップを交換しながら確認する。このうち、HD63P01M1がパワーオンでもリセットがかからない。電源をONにしないでシリアルI/Fを接続した時点でうっすらとパイロットランプのLEDが光るのであーこりゃ漏れとるな、と。ここで電源-GND間の電圧は1.91Vあった。どの程度回り込んでいるかを調べるためにR4(USB-TXD)を外して再度測定すると1.08Vだった。つまりUSB-TXD、USB-RXDの両方から電流が流れ込んでいる。完璧な対策は@cronos_svさんの絶縁USBシリアルI/Fを使うことだけど牛刀なのでここはオープンコレクターのLS07を使って電流が流れないよう分離する。

 回路は単純で、USB-TXO→SBC6303 RXDに10kΩプルアップ(SBC6303側電源)、SBC6303 TXD→USB-RDIに10kΩプルアップ(USBシリアル側電源)。SBC6303側から+5Vをもらい、シリアル入出力に直列に入れられた抵抗R4,R5をブリッジしてスルーする。
 プルアップ抵抗の値は適当で、もしなんかあったら10kΩをパラにしたら半分になるじゃない程度の考えで決めました。
2018SBCserial0

 アダプタ基板はこんな感じ。秋月D基板を半分に切ったもの。
2018SBCserial1

 アダプタ基板裏。
2018SBCSerial2

 SBC6303側のパッチ。
2018SBCserial3

 このアダプタ基板を入れた状態で本体電源ON、USBシリアルI/Fを接続、電源部分の電圧は0V。動作も問題なくパワーオンリセットが効くようになった。
 LS07の他にオープンドレインのHC07でも良さそう(後で気づいたけど千石やマルツにあった)。

Sinclair Scientific Calculator Emulatorキット

 tindleにてSinclairの関数電卓キットを見かけたので購入し、さっそく組み立てた。

プロジェクトの内容、組み立て方はこちら Sinclair Scientific Calculator Emulator(Arduino Enigma /hackaday.io)

 キット内容は基板とあらかじめ挿入してある7セグメントLED、タクトスイッチ、単4バッテリーケースに電池、プログラム書き込み済のArduino Nano、4.7kΩ×2、1kΩx8、スライドスイッチ、スペーサ、両面テープ。半田まで入ってた。さてこの写真には後にハマる落とし穴があります。なんでしょうか。
2018-ss1

 基板裏。写真の位置RKO/RKNに4.7kΩをハンダ付け。残りのR1〜R8は1kΩ。
2018ss2

 表側からはこのように見える。基板が白いのでフラックスクリーナーなどあったほうがよい。
2018ss3

 基板裏側からArduino Nanoをハンダ付け。ピンはこのように長い方をマイコン側にした。
2018ss4

 スイッチ類、LEDをハンダ付けしておわりと思いきや落とし穴にハマりましたよ。
あらかじめタクトスイッチは挿入してあるんですが、数字部分は青、その他は白のように分けてあるわけではないのです。たはーっ袋詰めの人はそこまでしてくれなかったか。ということでリワークの写真。
2018ss5

 動作確認自体は電池がなくてもArduino Nanoのmini-USBに給電することができます。あとはスペーサを取り付け、電池ホルダをキーの裏側に両面テープで貼り付けて完成。

 電源を入れるとSinClairの文字が表示され、使えるようになります。
2018ss6

セルフテストは0キーを押しながら電源ONで全LEDの点灯テスト、0と8のキーを押しながら電源ONでもうちょっと長いセルフテストを行います。

 このキット、内部はそのままSinclair Scientificをエミュレートしており、キーの接続も同じ様にしてある。
ソースリストはこちら。

 現代の電卓に慣れた身だと操作方法が直感的ではない。常に指数表示で[+]キーがエンターキーのような動作をするRPN方式、例えば1÷7は [1] [+] [7] [÷] となる。

 Sinclair Scientificのオリジナルには組み立てキットで提供されたものもあったようだ。


追記:コメント欄で教えてもらった。ナイトライダーK.I.T.T.のスキャナー。
IMGP2867

ちょっとキー入力のタイミングが難しくて、[0][8]のキーを押しながら電源投入、SINCLAIRの文字表示の直後、全LEDが点灯したらすぐキーを離し[2]のキーを押す。

SBC6303ルーズキットの組み立て

 SBC6303ルーズキット(電脳伝説)の販売が始まったのでさっそく組み立てた。

SBC6303ルーズキット(スイッチサイエンス)
SBC6303用LILbug ROM(スイッチサイエンス)

 だいたい手持ちの部品でOKだった。HC573だけなかった。手持ちの関係で1kΩ→1.2kΩ、LEDの電流制限抵抗は眩しすぎないよう4.7kΩに変更。HD63B03RPを使用。DCジャック部分は長孔が空いているが、ピンタイプの部品をハンダ付けした。
2018-SBC

 サンプルをロードして動作確認。OK。何も動かしていない状態での電流は0.01A。
2018-SBC-ok


 手持ちの部品にやたら古いのがあって30年くらい前に買ったものがいくつかあったので。

 これは長崎にあった電器店が電子部品を扱っていて、そこで買ったICソケット。値段表示が茶色のバーに20.で120円。
2018-SBC-120

 4.9MHzの水晶発振子はピンが酸化していた。
2018-SBC-Xtal



高速運作TL866CSプログラマ/USBついプログラマ EPROM FLASH AVR TL866シリーズプログラマ高速運作TL866CSプログラマ/USBついプログラマ EPROM FLASH AVR TL866シリーズプログラマ

Generic
売り上げランキング : 66552

Amazonで詳しく見る
by G-Tools

検証の計画ーEPROMの二度焼きは有効かどうか(実験なし)

 ツイッターを楽しんでたらPROMの二度焼きに関する話題が流れてきた。ROMに対する書き込みを確実にするために同じデータを二回書くと解釈した。これはまじないのたぐいだが上司がこれを本気にし一回だけの書き込みで大丈夫かどうか心配しだして検証を依頼された、という感じで検証の計画を考えてみる。
(なお実験は一切ありません)

☆現在の部署の設備環境でROMを書き込む時に二度焼きは必要か?
→ROMが化けると製品納入後にトラブル発生の可能性がある。
→二度焼きをすることによりデータが確実に書き込めるという主張。しかしその根拠はない。
→一回の書き込みより二回書き込んだほうが良さそうな雰囲気を感じるが、それは製造やコスト上影響があるほどのことなのか?
→落とし所は、一回の書き込みで充分ですよという客観的な内容。

 ROMの書き込みとデータ保持に関するしくみのおさらい。ROMはFETのゲート部分に電荷を溜めることによってFETのON/OFFを行い、これでデータを表現する。
Floating gate MOSFET(Wikipedia)
 ROMライタがFloating Gateを飽和されるほど充分に書き込んでいれば問題ないし実際そうなんだろうけど、それでも疑うというのであれば検証するしかない。(実は答えはここで出ている。Floating Gateに溜まっている電子の量が一回の書き込みでしきい値を越えていれば上書きしても無意味)


 検証対象、検証に必要な機材を検討する。
・ROMライター 量産で使用するもの。
・PROM。複数のメーカーより同一ロットを複数個。
・ROMサイズ分のランダムなテストパターン。
・ROM読み出しの治具。マイコンで走査する、またはROMライターのVerify機能を使う。

 データ化けがより起こりやすいパラメータの検討。
・データの読み出し速度
・データの読み出し 順かランダムか
・動作電圧 ±5%、±10%
・温度

 パラメータは振りやすいものからいじっていく。例えば温度を-10℃にしたいときはチャンバーが必要になりおおげさでこれはやりにくい。動作電圧等は振りやすい。データの読み出し速度は実際の製品で使う速度に合わせておく。
 データの読み出し方向については、治具が簡単になる方向にしておく。例えばランダム読み出しをしようと思えばマイコンを採用してコードを書いたり、と治具の設計が複雑になり治具のデバッグになってしまう恐れがある。

 異常な現象を出やすくするためには、まずTypicalな設定で基準となる動作を確認し、パラメータを1つずつ現象が出やすいと思われる方向へ振る。例えば電圧+10%で正常動作したら、+5%ではおそらく出ないだろうという予測ができる。

 異常現象が出ないことの検証は、設定した検証項目すべてをクリアすることで確認するので時間がかかる。
・PROM 同一ロット10個に同じランダムパターンを書き込み、治具により読み出しテストを1個あたり5分×3セット
 このへんで決めた数値は大きければおおきいほどよいのだが、それでは実験が終わらないので聞かれたら次のように答えることにする。
 5分の根拠→ROMのデータ読み込みn周分なので回数的に充分
 3回の根拠→1回じゃでないかもしれないので3回もやれば充分
このへんで決めた実験回数はあとで減らすことができない。減らしたせいで出なかったじゃないかと疑われる可能性がある。


 では以上の設定で実験をやってみたという設定で話はつづく。

・A社のROM 10個について、電圧±10%、温度25℃でパス
・B社のROM 10個について、電圧±10%、温度25℃でパス
・C社のROM 10個について、電圧±10%、温度25℃でパス

 一週間でこれだけ済んで上司に報告すれば、おおよそ「まあ出ないんだろうな」という雰囲気になるのでもう一つパラメータを振って現象が出なければ終了、となりそう。ということで今度は温度を振ってみる。温度を振るためには低い方と高い方を設定して上記のテストを行うか、またはチャンバーを借りて連続的に変化させ連続読み出しを行わせる。

 温度を二点設定する方法:
10℃雰囲気について、前回のテストを行う。
40℃雰囲気について、前回のテストを行う。

 チャンバーを使う方法:
室温→50℃→室温→-10℃→室温を5日間の間で行い、最後まで正常動作することを確認。治具は検証済みのものが複数台あると望ましい。例えば動作電圧をそれぞれ変えたもの。

 チャンバーを使った温度連続変化の方が、動作時間/温度環境ともに厳しくなるのでこれをパスすればおそらくどこからも問題がないと言えるだろう。チャンバーの借用も含めおそらく二週間コースですね。

  さて、それでもランダムな読み出しでは検証できていないじゃないかという話が出るかもしれない。そんなこともあろうかとランダム読み出しの治具は検証の間に検討を済ましておく。これを実際行うかどうかは上司の判断となる。担当者がこの実験にかかりっきりになる時間もタダではないのだ。

 検証はこういう条件でこれだけの時間行ったことについてOK/NGが言えるので、設定した条件の理由についてはすべて説明ができなければいけない。時間については検証にかかるコストとそれにみあう成果―それはひょっとしたら上司の安心感かもしれないが、周囲が納得できる長さにしなければならない。これはきりがないので充分に相談してゴールを設定する。リソースが有限な箇所は検証も有限なので、やはり最終的にはコストとの調整になる。


 ここまでは異常がないことを前提に話を進めてきた。もし異常な現象が出たのなら、デバッグに切り替わる。パラメータは異常な現象が再現する方向に倒して再現回数を上げ、次に最初のテーマであった二度焼きで改善されるのかどうか比較する。ここで正常動作の方向に倒れれば、はじめて二度焼きは効果がありそうだということが言える。そうなると、一回書き込んだROMで発生するエラーの回数と二回書き込んだROMで発生するエラーの回数で有意な差があるかどうかの検証に変わるだろう。

 二度書きでも改善しない、あるいは差がなければ部品や機材が疑わしくなる。もし部品であるROMそのものに異常が見られたら?大きいメーカーでは部品をまとめて大量に購入するため、購入する部品の評価をする部門を持っていたりするので、そこが検証を引き取ってくれる場合がある。こうなるといま設計している物とは関係がなくなってくるので、開発部門としては別の方式や部品の検討に入らなければならない。


ATMEL AT27C010-70PU ONE TIME PROGRAMMABLE (OTP) EPROM IC (1 piece) [並行輸入品]ATMEL AT27C010-70PU ONE TIME PROGRAMMABLE (OTP) EPROM IC (1 piece) [並行輸入品]

Tough Guy
売り上げランキング :

Amazonで詳しく見る
by G-Tools

68HC11命令一覧表

 前回の6800系命令一覧表の追加で68HC11の命令一覧表を作りました。

 6800 Instruction Table


 68HC11はMC6801/MC6803の上位互換で新たにYレジスタが追加されている。これにともない、0x18、0x1a,0xcdのコードはプレフィックスとして扱われる。
07
 ビットを操作するBSET/BCLR、ビットを見て分岐するBRSET/BRCLRと除算IDIV/FDIV命令が追加。
 HD6303と同等のXGDXとXGDY、似た動作をするSTOP、テストモードに入るTEST命令が追加。ただしXGDX命令が割り当てられたコードは異なる。
 HD6303で追加されたAIM/OIM/EIM/TIM命令はない。

33
 プレフィックス0x18はインデックスアドレッシングモードでYレジスタを使うバリエーションが追加されている。

59
 プレフィックス0x1aは新規命令CPDとYレジスタを操作する命令がインデックスアドレッシングモードでXレジスタを使うものがはいる。
 プレフィックス0xcdはXレジスタを操作する命令がインデックスアドレッシングモードでYレジスタを使うものがはいる。

 8080命令がそのまま動くZ80は現行品、6800命令がそのまま動く68HC11も現行品。8ビットマイクロプロセッサのオリジンたちのコードが今も動いているというのはいいですね。

6800系命令一覧表

 MC6800/MB8861/MC6801(MC6803)/HD6301(HD6303)の命令一覧表を作りました。ニーモニックとアドレッシングモードがわかっているかた向けです。
以下のGoogleDriveスプレッドシートで公開しています。コピーしてご自由にお使いください。

※ 2018/3/9 typo STA→STAA,STB→STAB 修正済
※ 2019/2/21 $9D/$DD HCF追加 https://en.wikipedia.org/wiki/Halt_and_Catch_Fire @haserin09 はせりん氏より ありがとうございます

 6800 Instruction table

 作成にあたり各データシートと小松さんの半導体コレクション展示会場を参考にしました。



 表はクリックすると大きめに表示されます。

・MC6800
スクリーンショット 2019-02-21 1.06.37
 始祖。わりあい空きが目立つ。


・MB8861
スクリーンショット 2019-02-21 1.05.59
 富士通製の互換品。独自の命令拡張5種6命令が追加されている。


・MC6801/MC6803
44
 アキュムレータAとBを連結したDレジスタが追加されたシングルチップマイコン。
Dレジスタ周りの操作と乗算MUL、飛ばない分岐命令BRN、Xレジスタの操作とダイレクトモードのJSRが追加。
 アセンブラの表記ではASLをLSLと呼ぶなどのエイリアスが追加されている。表記のみの話で命令が追加されたわけではない。


・HD6301/HD6303
06
 日立がMC6801/MC6803をCMOS化した製品だがXGDM,SLPとMB8861類似のAIM/OIM/EIM/TIM命令が追加されている。
 MC6801/MC6803では$4E/$5Eのコードが"force the PC to function as a 16-bit counter"とあって実行するとフリーランしそうな感じなのだけれども、HD6801/HD6303は未定義命令となっている。これ以外は上位互換。
 なお日立のデータシートではInherentをImpliedと呼んでいる。


 なにか誤りがあれば教えてください。各命令の命令長とサイクル数は各自の宿題とします。

記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ