まごころせいじつ堂

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

マイコン

NEC uPD8080AのDAA命令調査 ADD編

 前回の SBC8080システムROMでBASICから機械語を呼び出す で実チップのテスト環境が整ったので以前から気になっていたIntel 8080とNEC μPD8080Aの非互換部分についての調査を行った。

 NEC μPD8080AはIntel 8080のクローンではなく独自に改良し、DAA命令(十進補正命令)の減算対応、実行クロック数の改善がなされた。が、せっかく改善したのに非互換部分が嫌われ完全互換のμPD8080AFに切り替わった。
MCS-80(IC Collection)

 まずDAA命令の動作について。DAA十進補正命令はハーフキャリーを参照する。

Auxiliary Carry: If the instruction caused a carry out of bit 3 and into bit 4 of the resulting value, the auxiliary carry is set; otherwise it is reset. This flag is affected by single precision additions, subtractions, increments, decrements, comparisons, and logical operations, but is principally used with additions and increments preceding a DAA (Decimal Adjust Accumulator) instruction
FLAGレジスタのbit4はACフラグ(またはHフラグ ハーフキャリー)で加算時のbit3からbit4への桁上げで立つ。このフラグは加減算/INC/DEC/比較/論理演算で変化するが主に加算とINCの後のDAA命令で使う、とある。

 DAA命令の記述。
スクリーンショット 2019-01-13 21.30.20

 DAA命令は直前のADD命令について、BCD表現の数値を加算したものとして補正を行う。例えば04H+06Hは0AHだけどこれを10Hに修正する。その手順は以下のとおり:
(1) 下の桁がA-Fになっている、またはハーフキャリーが立っていれば6Hを加算する。
(2) (1)の後、上の桁がA-Fになっていればキャリーフラグを立て60Hを加算する。

もっと詳しい実装の解説はこちら:

 ではデータを採取して比較を行う。コードは前回を参照。テスト結果は1バイトの十進数で

数値A 数値B A+Bの結果 加算後フラグ DAA補正後の結果 補正後フラグ

このデータが256×256パターンで65536行。このデータを適当なunix環境に持っていってawkで処理。Excelでもなんでもいいです。

 まずは16進に変換。数値Aと数値Bは連結してインデックスとして使えるようにする。フラグは2進数表示。こんな感じになる。

0000 00 01000110 00 01000110
0001 01 00000010 01 00000010
0002 02 00000010 02 00000010
0003 03 00000110 03 00000110
...

あとは任意のフィールドを切り出して比較していくだけ。

対象となるCPUは以下:
(1) INTEL MD8080 A/B インテル純正の安心感。すべての比較元とします
2019-MD8080

(2) CCCP KP580BM80 (USSR KR580VM80) ソ連製8080クローン
2019-USSR1

(3) CCCP KP580BM80A (USSR KR580VM80A) ソ連製8080Aクローン
2019-USSR2

(4) NEC μPD8080A 今回の主な調査対象
2019-D8080A

(5) NEC μPD8080A-T -Tサフィックスはなんだろう?
2019-D8080AT

(6) NEC μPD8080AFC Intel 8080A完全互換にしたもの
2019-D8080AFC

テスト結果:(HフラグはACフラグと読み替えて)
a. 加減算後のDAAについて
(1) (2) (3) (6) はまったく同じ。DAA動作は完全互換
(4) (5) はまったく同じ。NEC μPD8080AとμPD8080A-Tは同じもの

b.加算後のDAAについて(1)と(4)を比較
・演算結果の数値は一致
・フラグが異なる
・NEC μPD8080Aは未定義フラグbit3が常に"1"。INTEL 8080Aは常に"0"
・NEC μPD8080AはDAA命令の前後でHフラグの状態は変わらない
・INTEL 8080AのDAA命令前後でのHフラグの動作:
 DAA前にHフラグが立っているとDAA後にHフラグは落ちる
 DAA前にHフラグが落ちているとDAA後に補正前の演算結果の下1桁がA~Fだった場合に立つ

 DAA補正後のHフラグに関しては定義されていないのでこれらは未定義動作として済ませるんですが、続きがあります。

 Dr.Dobb's Journal 1976/11/12 によると"IMSAI INCOMPATIBILITY"というのでNEC製8080Aの挙動についてメーカーに質問が出ている。本来 XRA Aの後にDAAはやらないんだけどやってみたら結果が0のはずが6になっている。これって十進補正をやっているように見えますね。

確認コードはこちら:

 ここでIntelのユーザーズマニュアルでXRA命令を確認してみる。
スクリーンショット 2019-01-13 21.29.56

 XRA命令実行後にAC(ハーフキャリー)はクリアされると書いてあるが、NEC μPD8080Aではクリアされずにセットされたままになっている。この部分は未定義ではないのでIntel 8080とNEC 8080Aの非互換部分と言える。これはXRA命令の実装でACフラグを操作するパスがなさそうに見える。さらに想像するとNEC 8080AではANA以外の論理演算命令ではACフラグは変化しないのかもしれない。

※追記 XRAをANA/ORA命令に替えて実験
ANA命令 Intel 8080でACフラグクリア 仕様書の誤記?
ORA命令 Intel 8080でACフラグクリア
NEC 8080AではANA/ORAともACはクリアされずそのまま


 SUB後のDAA命令編に続く


Ex: El
Posted with Amakuri at 2019.1.13
808 State
Salvo

SBC8080システムROMでBASICから機械語を呼び出す

 SBC8080ルーズキット用のSBC8080システムROMは電脳伝説(@vintagechips)さんの手によりPALO ALTO BASICに独自の機械語モニタを拡張してあり一行アセンブラが使えて大変便利。MONでモニタにはいりSYSTEMでBASICプロンプトに戻る。EXEC 番地で番地+8000Hに飛んでRET命令でプログラムに戻ってこれるのだけれどもPEEK/POKEがないのでパラメータのやりとりがそのままではできない。

 そこでSBC8080技術資料の記述からPALO ALTO BASICの資料をたどって調べてみた。
Astrocade Machine Language Source Code Palo Alto Tiny BASIC, Version 3 よりPDFを取得

 TINY BASICなので変数名はA〜Zのみ、@は配列。BASIC変数/バッファ領域はSBC8080システムROMの場合F000HからF087Hまで。適当に変数Aに代入してMONで覗いてみると値が変化しているところがある。調べた結果、
F002H 変数A
F004H 変数B
F006H 変数C
F008H 変数D
F00AH 変数E
F00CH 変数F
...
となっていた。数値は2バイトでリトルエンディアン。ということはここを機械語とのパラメータ受け渡しに使える。

実際に作ってみた例はこちら:TeraTermに送信するときは設定(S)→シリアルポート(E)... で送信遅延を10ミリ秒/字 100ミリ秒/行にするのを忘れずに。

 これは十進補正命令DAAの動作を確認するテスト。変数Aと変数Bの値を加算し結果を変数C、フラグを変数Dに格納。その後DAA命令を実行し、結果を変数E、フラグを変数Fに格納する。いずれも下位1バイトしか使わない。8080アセンブラで初めて書いたのでみてみて。
 8000 LXI       D,F002 変数AへのポインタDE
 8003 LXI       H,F004 変数BへのポインタHL
 8006 LXI       B,0000 BC←0 これはAFのクリア用
 8009 PUSH      B
 800A POP       PSW AFクリア
 800B LDAX      D Accに変数Aの内容をコピー
 800C ADD       M Acc ← Acc + 変数B
 800D PUSH      PSW いったん結果を保存
 800E DAA      十進補正
 800F PUSH      PSW
 8010 POP       B AFのペアをBCにコピー
 8011 MOV       A,B
 8012 STA       F00A 変数Eに十進補正後の結果を返す
 8015 MOV       A,C
 8016 STA       F00C 変数Fに十進補正後のフラグを返す
 8019 POP       B
 801A MOV       A,B 変数Cに補正前の結果を返す
 801B STA       F006
 801E MOV       A,C
 801F STA       F008 変数Dに補正前のフラグを返す
 8022 RET
  これをBASIC側から変数Aと変数Bを0〜255の範囲で変化させてEXEC 0で呼び出し、結果を含めて画面出力するだけ。文字出力はBASIC内のサブルーチンを呼び出せばできそうだったが手を抜いてBASIC側でやった。ループも同様。どのみち9600bpsの端末への出力なのでいくら高速化してもそこで律速となる。

 なんでこれを作ったかというとIntel純正8080に対してNEC 8080Aは独自改良でDAA命令を修正したが、非互換ということでNEC 8080AFでIntelとまったく同じ動作に戻したという話があったので調べてみようと思ったからだ。次回お楽しみに。




復活!TK‐80
Posted with Amakuri at 2019.1.13
榊 正憲
アスキー

ソ連のCPU KP580BM80Aの動作確認(2)

 前回の続き。

 さて、KP580BM80Aの動作が怪しいので確認用にebayでもう1個購入。2週間程度で届いた。

 マークが{S}みたいなのは製造元(工場?)が異なるため。
2019KP580-1

 で、問題なく動作。ということはKP580BM80Aは個別故障ということになる。
2019KP580-2

 PALO ALTO BASICで5.09V/0.51A、BASICでA=A+1しながら数字を表示するループ実行で0.53A。電圧高めなのはスマホ用のUSB電源アダプタを適当に使ったせい。

 これでおしまい、でも良かったのだけれどももうちょっとだけ調査。

 割り込みの観測のため8080のINTE(pin16)にLEDを追加。電流制限抵抗は大きめ(8.2kΩ)にしたので駆動力ヨワヨワの8080でも問題ないでしょう。
2019KP580-3


 INTEは故障と思われるKP580BM80Aでもリセット後は点灯。ただし端末側のキーを押してINTを発生させるとLEDで消え、画面に連続した文字は出なくなる。つまりPALO ALTO BASICのROMで割り込みを受けるまでは画面に連続して文字が出ているので、CPUはなにかしらの命令を実行しているのだが、どこかで暴走しループしているように見える。
2019KP580-4

 故障箇所は前回の調査でわかった「INT信号で割り込みが発生し割り込みがマスクされるが38Hには飛んでいない」以外にもあり特定の命令の実行またはジャンプ先が変わるような動作でおかしくなっているようだ。少なくとも00HのNOP連続による動作はできた。

 横井与次郎著 マイクロコンピュータ・ハードウェア基礎技術 のp.156にある3.1.3 8080Aの絶対最大定格によると-5V側の電流は1μA〜1mAとあるが、ここの電圧が0Vだと+5V/+12Vの電流が非常に大きくなるので長時間-5Vを与えない状態で使うのはしてはいけないと書いてある。ということは何らかの原因で-5Vが印加されなくなったら動くことは動くけれども発熱で8080が故障するのであろうか。

 まあ良品を壊してまで調べようとは思わないので故障調査はこれでおしまい。ということでソ連製の8080クローンでもSBC8080は動作します。




ソ連のCPU KP580BM80Aの動作確認(1)

 SBC8080ボードができたので手持ちのコレクションについて動作確認。

 まずはソ連製の8080クローン、580GF24(8224)/580BK38(8238)/580BM80(8080)。
SBC8080+SUBボードで 5.03V 0.31A。PALO ALTO BASIC動作した。
2019SBC8080-1

 では、CPUを8080AクローンのKP580BM80Aに交換してみる。
2019SBC8080-2

 すると、このような表示に。最初はカタカナが連続して表示される(途中で繰り返すように見えるのはリセットを1回かけたため)。
2019SBC8080-3

 これはどういうことだろう。SBC8080ボードではCPUの周りのアドレスバスはHC541×2、データバスと制御信号は8238(8228)でガードされている。ということでまずはアドレスバスを疑いHC541→LS541に交換してみたが現象変わらず。次にデータバスと制御信号について、NEC uPB8228C / NEC uPB8224Cに交換してみたがこれも現象変わらず。
 SBC8080ボード用フリーランテストボードで確認してみたが00H(NOP)によるフリーランはできている。
2018SBCLED-3

 さて、どうしようか。の前にソ連製の8080クローンについて。

USSR 8080 microprocessor family(CPU-World) によると、3種類の8080/8080Aクローンが存在する。
・580VM80 8080のクローン
・KR580IK80A 8080Aのクローン
・KR580VM80A 8080Aのクローン、2.5MHz動作
独自に作られたものもあるようだ。ソ連はずっと8080互換でやってたんだろうか。
・KR580BM1 5V単一電源、5MHz動作、ピン非互換

なおKR580VM80Aはアルファベット表記で、本来は КР580ВМ80А とキリル文字で表記するらしい。キリル文字の方で検索するとロシア語のドキュメントに当たりやすい。

 580BM80Aについてはビデオゲームの修理にそのまま交換部品として使われていたりリバースエンジニアリングでVerilogソースまで調べられているので、論理的には同一のはず。

 PALO ALTO BASICでは調査も難しいのでもっと簡単なテストプログラムで確認してみる。SBC8080 CPUルーズキットで提供されているSBC8080データパックにある、TEST80というプログラムを使用する。これは8251を使ったエコーバックテスト。で、TEST80.HEXをROMに焼いて電源をいれると580BM80Aではプロンプト">"は出るがエコーバックせず。キーを押しても応答なし。いきなり当たりか?念のためSBC8080SUBボードの82C51を8251に変えてみたが現象変わらず。まあ文字の送信ができているということは8251の初期化はできているっぽい。

 端末からデータを受信すると8251はRXRDY信号を上げる。これは8080のINT入力に接続され、RST7割り込みが発生する。TEST80プログラムは割り込み発生後、38H番地からのコードで8251から1文字読んでメモリ上のバッファに書き込み、割り込みを再度許可する。TEST80プログラムはメインルーチンではバッファに何か文字があるとそれを送信し、バッファを空にする。

 ということで割り込みの状態を監視してみる。8080のINTE(pin16)を観測。以前作ったロジックチェッカーを使用した。で、NEC 8080Aでの結果はINTEは一瞬LになるがすぐHにもどる。つまり割り込みを受け付けられる状態になる。580BM80Aはリセット直後はINTEはHだが、キー入力があるとLになりそのまま。これ以降は割り込みを受け付けない。
2019SBC8080-4


 ここからはTEST80にパッチを当てながら確認していく。最初は38HにEI命令を入れてすぐに割り込みを許可するようにした。NEC 8080Aでは連続して割り込みが発生。これは8251の割り込み要因を落としていないので期待通りの動作。580BM80AではINTE信号がH→Lとなりそのまま。

 8080は割り込みが発生するといったんINTEをLにする。割り込み処理のプログラムで割り込み要因を落とした後、最後で割り込みを許可する。なので割り込み自体は受け付けている。あとは本当に38H番地に飛んでいるかどうかだ。
 さてそれをどう確認するかだが、SBC8080SUBボードにちょっとLEDを追加した。8251のTXRDY端子にLEDカソード側を接続、アノード側をVccへ。これで送信バッファがフル(=1文字送信中)の時に光るはず。
2019SBC8080-5

 パッチは38H番地にOUT C0Hを書き込む。これはAccにあるダミーデータを1文字送信する。580BM80Aでは一瞬も出なかった。念のためロジックチェッカーで監視しても同じ。つまり38H番地には飛んでいないということになる。

 以上から手持ちのKP580BM80Aは
・INT割り込みで割り込みをdisableするが38H番地へは分岐していない。
・別の番地へ飛んでいるのかHALTしているのかはバスの観測が必要。
・CPUの差し替え事例から個別故障の可能性がある。


ということで別に手配したKP580BM80Aを使って確認する予定。


インテル8080伝説
Posted with Amakuri at 2019.1.2
鈴木哲哉
ラトルズ

SBC8080ボード用フリーランテストボード

 手持ちのコレクションCPUが生きているかどうか気になる。Z80についてずっとデータ00Hをフェッチさせてアドレスバスを観測する手法があるが、SBC8080ボードでもいけるはずなので40ピンのバスに接続するアダプタを作った。

8ビット CPU Z80LED点滅(Yamamoto's Laboratory)

データバスを10kΩ×8の集合抵抗でプルダウン、A15〜A0をLEDのアノード、*MEMWR、*MEMRDをLEDのカソードに接続、電流制限抵抗は大きめ(〜10kΩ程度)、これでも充分明るい。LEDはバータイプ10個のものを2つ使うとA15-A0、*MEMRD、*MEMWR、*IORD、*IOWRでちょうどよい。

2018SBCLED-1

2018SBCLED-2

 左端のA15,A14あたりが点滅して見える。〜A0まで点灯して見えるが実際は高速に点滅している。
2018SBCLED-3

 フリーラン用のデータバスプルダウンを外せばバス観測に使えるはずなので作り直すかな。その時はピカピカ光るのでSBCゲーミングボードとしよう。



SBC8080ボード

 記事を書いてたつもりが抜けていたのでメモとして。


 8080Aは周辺チップが必要なことと+12V/-5Vの回路のせいでSBCシリーズとしては部品密度高めです。確実な組み立て方としては

(1) NJM2360A周辺を実装し、5V供給で+12Vが生成されることを確認
2018SBC8080-1

(2) 8224周辺と-5V生成回路を実装し、-5Vが生成されることを確認
2018SBC8080-2


(3)残りの部品を実装
2018SBC8080-3


の順でやればよいでしょう。

 ROM/RAM/UARTについては秋月B基板サイズに収まらないためSBC8080SUBボードに実装されます。作例では40Pフラットケーブルで接続されていますが、私はピンヘッダとピンソケットで重ねられるようにしました。このうちピンヘッダはSBC8080SUBボード側の部品面に、ROMなどソケット部品が干渉しないよう背の高い連結ピンヘッダを半分にカットして使用、SBC8080ボード側ははんだ面にピンソケットを実装。

ボードの間隔は17mmになります。この高さのスペーサがなかなか見つからないのですが、使用すると接続後しっかり固定できます。
2018SBC8080-4

 動作確認はSBC8080システムROMで行った。以下は手持ちの石の組み合わせ。

NEC uPB8224C / NEC uPB8228C / NEC D8080A


次回予告:寒い国から来たCPU


インテル8080伝説
Posted with Amakuri at 2018.12.31
鈴木哲哉
ラトルズ



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対象

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でも良さそう(後で気づいたけど千石やマルツにあった)。

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

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と呼んでいる。


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

COSMAC CDP1802メモ


COSMAC(IC Collection)

Rev G 1802 "Membership Card" (prelim)

CHIP8.com

CHIP-8(Wikipedia)




 

メモ:20140320


OPアンプ大全 PDFダウンロード[ANALOG DEVICES]

TI LaunchPad

Arduino
Arduino UNO R3 + dfu-programmerって、みんなどうしてるの?
Arduino + USBホストシールドの実験。[robo8080のブログ]
Interfacing Arduino to USB GPRS modem[Circuits@home]

Grove RTC[seeed wiki]
DS1307 64 x 8 Serial Real-Time Clock(PDF)

Intel Galileo — I/Oエキスパンダで液晶[痛い日記]

895円の超小型Ardunoクローン DigiSparkを買った[橋本商会]
Getting Started with your Digispark
OLIMEXINO-85-ASM

VGA端子の同期信号出力タイミング規定[日曜技術者のメモ]

Fritzingでパーツ作り[DENSIKIT.COM]

PIC
INI-M4 for STM32

I2Cの接続構成とプルアップ抵抗[電子工作の実験室]


LPC810
LPC810を使っての感想他[SE組込人]
フルカラーシリアルLED簡単に制御できるコントローラ開発[SE組込人]
NXPの小ピンARMの試食[ELM]



FPGA

FPGAでコインを掘る[SandBox(旧「サザエ2号」)]
CudaMiner / sha256.cu


 

メモ:201403


IRKitの作り方(SlideShare)

PS4 controller support for the USB Host library

Boards.h in Firmata library needs an update

https://github.com/yishii/Galileo_useLinuxShellFromUSB/blob/master/Galileo_useLinuxShellFromUSB/Galileo_useLinuxShellFromUSB.ino

mbed
STM32 Nucleoで始めるmbed開発:mbed開発でデバッグするにはどうすればよいのか

mbedをHTTPサーバ化メモ

ビット制御のBITBANDは超便利 (2012.12.07)

MB2051-206E-SPN

第17回 MSP430™ LaunchPadの入出力機能を拡張する、省電力モードを活用したプログラミング

電子箱庭『のらぴか 明-mei-』

無線LAN(Wi-Fi) SDカードまとめ ~Arduinoで使いたい~

http://arduino.densikit.com/jikken-shitsu/aqm1248a


 

201402メモ

Arduino
Crowduino v1.1


Arduino用 音声合成LSIライブラリ

BS21 Lab の製品

Arduinoがあなたのトレーナーに――「運動しなさい! 電光掲示板」を作る (1/3)

パラレル→シリアル変換ボード付き 16×2OLED カラーディスプレイ(PDF)

XBeeをはじめてみよう(シリーズ1編)

mbed/ARM
トラ技ARMライタを mbed interface にする

トラ技ARMライタ仕上げ部品セット

[lang:ja] mbed LPC1114での遊び方

LPC1114でビデオ出力

2014.02.06 LPC810のI/Oマップを作ってみました

Flash Magic


2014.02.02 LPC810(通称どんぐり)をmbedのクラウドで開発

lpc21isp


MMC/SDCの使いかた

漢字フォントROM(GT20L16J1Y)

GR-SAKURA用ソフトウェアとシールド

ALTERA Recommended HDL coding styles(PDF)


201401メモ

FPGA PACMAN with Velilog

Verilog Lecture 1 of 10 - 2009 (YouTube)

TI ホーム > 「マイコン基礎の基礎」シリーズ

An MSP430 based Clock

TI Stellaris Launchpad Rebranded to Tiva-C Launchpad

Aruduinoはじめました。

fabiankr / Cocoduino

aitendo 3.5インチ液晶 for Arduino MEGA2560 を使う。

ロータリーエンコーダーを使ってみる
Arduino – ロータリーエンコーダを回す
ロータリー・エンコーダの使い方

122X32モノクログラフィックLCDシールド

各種I/FのVFDモジュールに表示させよう!

Beagle Bone Black に4.3'LCDをつなげる

SBBLE(サブレー) I2C対応版 公開!

MCUで遊ぼう(43)

LPC810でLチカしてみた。

LPC810(通称どんぐり)をmbedのクラウドで開発

DIP_ARM LPC1114FN28のプログラムをシリアルで書き込む

mbedボード FRDM-KL46Z

Free/Open ARM Cortex MCU Development Tools CooCox

シリアルSRAM 23LC1024 の接続テスト

素子:I/Oエキスパンダ MCP23017

OpenWrt → Hardware Hacking → Transcend WifiSD / PQI AirCard / FluCard Pro

201312メモ

Arduino関連。
Happy Hacking KeyboardをBluetooth化する(無改造版)

Arduino に dualMocoLUFA(USB-MIDI ファームウェア)を導入

無線LAN(Wi-Fi) SDカードまとめ ~Arduinoで使いたい~

Firmataプロトコル概要 (Ver 2.3)

DFU-Programmerのビルド

100円マイコンATtiny2313でArduino

Trinket 5V版と3.3V版がある。USBはソフトウエアで実現。シリアル通信はWindows側にドライバが必要。速度が遅すぎるせい?
Home/ Trinket/ Introducing Trinket/ Pinouts
Home/ Trinket/ Trinket USB Volume Knob/ Code

NXPのDIPーARMマイコン。
NXPの8ピンARMを食す(その2)
LPCXpresso IDEのRed State Machine file generatorを使ってみた [電子ブロック工房]
180円mbedの使い方

BeagleBoardBlack
OpenRTM-aistをBeagleBone Blackに実装し、開発する方法

x86系のarduino 86DuinoとGalileo

 x86系のCPUを使ったArduino互換のボードが出始めている。

86Duino 

86Duino Zero

86Duinoは互換チップのVortex86を使ったボード。バリエーションがあるみたい。

 いっぽう、GalileoはインテルのQuark SoC X1000 Application Processorを使用した純正で、Arduino IDEも出ている。

Intel Galileo

スイッチサイエンスで予約が始まった。

インテル Galileo 開発ボード 

 

2013年10月までのメモ


LTspice入門
 Mac用もある
 
INTRODUCING 123D CIRCUITS

Enginursday: Visually Programming Arduino

[GR-SAKURA][mruby]GR-SAKURAでmrubyを動かす (1)

2013-08-06 ¥1,650で買えるARM基板STM32F4DISCOVERYでmrubyを動かす

Nibbler 4 Bit CPU

TTL でCPUを作成、16bitの手作りコンピューター TANACOM-1 誕生

PIC32MX220F032B USB MIDI ホスト (15)

ISP programming application on mbed イカ醤油ポッポ焼き

[lang:ja] mbed LPC1114での遊び方

サポートするSCSIコマンド

プリント基板の試作、実装、リワーク 株式会社工房やまだ

カーネル/VM式ARMマイコン入門

BBB - FPGA / CPLD Programmer for the BeagleBone Black

論理回路デザイン

Amber ARM-compatible core :: Overview

DESIGNSPARK - ホーム

PINOUTS.RU

作って遊べるArduino互換機 Uncompatinoの組み立て失敗

 愉快な製作例が満載 作って遊べる Arduino互換機鈴木哲哉著)を買ってきた。作例で使うArduino互換のUncompatino基板が付いている。部品は別に入手しなければならないが、秋月電子で1000円で売っていた。
『作って遊べるArduino互換機』パーツセット
【書籍】作って遊べるArduino互換機

2013uncompatino1
 
 さて、難関はFT232RLのハンダ付け。これだけ2.54mmピッチではない。本の通りにやってみる。ハンダの吸い取りは吸い取り線にフラックスを塗ってやってみた。
2013uncompatino2

 他の部品も取り付けた後、PC側に必要なソフト類を用意。
BitBang版avrdude(avrdude-setjtag04e.zip) (すzのAVR研究)
avrdude-GUI(avrdude-GUI-1.0.5.zip) (ゆきの研究室)
libusb-win32

 Uncompatinoのプラグを全ショートにしてUSBで接続。avrdude-GUIでFUSEを読み込んでみるが以下のエラーが発生。


 
avrdude.exe: BitBang OK
avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude.exe: drain OK

ft245r:  bitclk 76800 -> ft baud 38400
ft245r:  bitclk 76800 -> ft baud 38400
avrdude.exe: ft245r_program_enable: failed
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.


avrdude.exe done.  Thank you.

 -Fオプションを付けてやってみると:
avrdude.exe: BitBang OK
avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude.exe: drain OK

ft245r:  bitclk 76800 -> ft baud 38400
ft245r:  bitclk 76800 -> ft baud 38400
avrdude.exe: ft245r_program_enable: failed
avrdude.exe: initialization failed, rc=-1
avrdude.exe: AVR device initialized and ready to accept instructions
avrdude.exe: Device signature = 0x000000
avrdude.exe: Yikes!  Invalid device signature.
avrdude.exe: Expected signature for ATMEGA328P is 1E 95 0F

avrdude.exe done.  Thank you.
 USBからFT232RLへの通信は上手く行ってるみたいだが、FT232RLとATmega328pの通信がうまく行っていない。これはもうハンダ付け不良。
2013uncompatino3
 
 目視してもわからない。ショートチェックはやったが基板とFT232RLの足がうまくついているかはわからないので、半田ごてでなぞってみる。
 そうやってからUSB接続したらLEDが薄明るく点灯。読み書き操作で点滅。これで上手く行った。 Arduino用のブートローダを書き込んで、BlinkのサンプルスケッチでLチカやって動作確認。
 これでArduinoが一枚増えた。また、AVRの書き込み器としても使えそう。
 老眼つらい。

 
作って遊べるArduino互換機作って遊べるArduino互換機
鈴木 哲哉

ソシム 2013-08-21
売り上げランキング : 119653

Amazonで詳しく見る
by G-Tools
記事検索
プロフィール

hardyboy

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