<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>
<channel rdf:about="http://blog.livedoor.jp/hardyboy/">
<title>まごころせいじつ堂 - マイコン</title>
<link>http://blog.livedoor.jp/hardyboy/</link>
<description>浜町庄金　研究開発
　マイコンで遊んでばっかりで

</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="http://blog.livedoor.com/?v=2.0" />
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9765024.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9748626.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9726545.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9697754.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9686742.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9683777.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9625150.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9600817.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9600387.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9600052.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9598322.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9597946.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9597269.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9596047.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9573608.html" />
 </rdf:Seq>
</items>
</channel>

<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9765024.html">
<title>SBCV20 16MHz動作への道</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9765024.html</link>
<description>　V20/V30には16MHzで動作する高速バージョンのV20HL/V30HLというのがある。これをSBCV20で動かせないかやってみた。　クロックジェネレータuPD71011Cは接続した水晶振動子の周波数をOSC(pin12)、1/2の周波数をCLK(pin8)、1/4の周波数をPRCLK(pin2)に出力する。uPD71011C-8は...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2021-02-18T01:33:26+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　V20/V30には16MHzで動作する高速バージョンのV20HL/V30HLというのがある。これをSBCV20で動かせないかやってみた。</div><br /><div>　クロックジェネレータuPD71011Cは接続した水晶振動子の周波数をOSC(pin12)、1/2の周波数をCLK(pin8)、1/4の周波数をPRCLK(pin2)に出力する。uPD71011C-8は16MHz、uPD71011C-10は20MHzまでOKなので、16MHzの水晶振動子を使いOSC出力をCPUのクロックとして使い、1/2のCLK出力を周辺用のクロックにする。USARTは8MHz以上で動作するuPD71051C-10にし、ボーレートのクロックは以前<a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/9748626.html">SBCV20とクロックジェネレータ</a>でやったPIC12F1822により独立して供給し、システムのクロックに依存しないようにする。</div><br /><div>　改造はパターンカットと配線２本。</div><div>(1) IC5: uPD71011Cのpin8(CLK)近傍とIC4: uPD70108のpin19(CLK)をカット。</div><div>(2) IC5: uPD71011Cのpin12(OSC)とIC4: uPD70108のpin19(CLK)を接続。</div><div>(3) IC5: uPD71011Cのpin8(CLK)とIC8: uPD71051Cのpin20(CLK)を接続。</div><br /><div>※IC9: HC4040は外してPCI12F1822基板に差し替えているので(3)はショートしない。</div><div>※クロックの配線を両端でカットするのはアンテナになるのを防ぐため。<br /></div><br /><div><a  target="_blank" title="2021-02-17 02.15.17" href="https://livedoor.blogimg.jp/hardyboy/imgs/f/a/fa612c4d.jpg"><img  class="pict" alt="2021-02-17 02.15.17" src="https://livedoor.blogimg.jp/hardyboy/imgs/f/a/fa612c4d-s.jpg" width="480" hspace="5" height="853" border="0"></a><br /><br /></div><div>　16MHz動作のメモリリードは2サイクル分で125nsなのでこれより速いROM/RAMを使用する。ROMはSTMicro M27C512-10F1、RAMはFUJITSU MB84256C-70Lに交換した。</div><br /><div>　あと、あまり関係ないがSBCV20においてIC6はHC257の代わりにHC157が使える。<br /></div><br /><div>　さて、16MHzの水晶振動子を挿して実験。8080モードでのBASICは起動するがオーバーフローエラーが出てASCIIART.BASが止まる。起動時のメモリ表示も"031171 Bytes free"と先頭に0がついていておかしい。<br /></div><div><a  target="_blank" title="スクリーンショット 2021-02-17 020808" href="https://livedoor.blogimg.jp/hardyboy/imgs/9/4/94644bbc.png"><img  class="pict" alt="スクリーンショット 2021-02-17 020808" src="https://livedoor.blogimg.jp/hardyboy/imgs/9/4/94644bbc-s.png" width="480" hspace="5" height="621" border="0"></a><br /><br /></div><div>　手持ちの14.31818MHzに落として実行。今度はうまくいった。ASCIIART.BASの実行に1分44秒。</div><div>だがこれはたまたま動いたことが後に判明する。<br /></div><div><a  target="_blank" title="スクリーンショット 2021-02-17 021422" href="https://livedoor.blogimg.jp/hardyboy/imgs/b/7/b71dae15.png"><img  class="pict" alt="スクリーンショット 2021-02-17 021422" src="https://livedoor.blogimg.jp/hardyboy/imgs/b/7/b71dae15-s.png" width="480" hspace="5" height="615" border="0"></a><br /><br /></div><div>　さて、V20HLは16MHzまでOKなのに動かないのはおかしい。何が間に合ってないのか。このV20HL uPD70108HCZ-16は5個1000円くらいで購入したもの。外し品らしくピンには半田の跡。どうもあやしい。</div><div>　skyriver(<a  target="_blank" href="https://twitter.com/wcinp">@wcinp</a>)さんの記事、<a  target="_blank" href="https://piclabo.blog.ss-blog.jp/Pic24V20_16MHzEval2#16MHzV20Check">レトロマイコン86ボードの構想(その22) 16MHz動作実験2 [8086]</a> によるとリマーク品の疑いが。そこで残りの4個で動作確認してみると16MHzではBASICも起動しないもの、14MHzでオーバーフローエラーが出るものとおかしいものばかり。最初に引いたのがたまたま良品だったらしいのだが、これも再度14MHzで動作させると表示途中でオーバーフローエラーとなった。</div><div>　挙動を比較するため手持ちのuPD70108C-10、これはFM-11の改造用に新品を秋葉原で購入したものだが14MHzで動作させると他のものと同様のオーバーフローエラーが出た。ここから推測すると手持ち５個のV20HLはuPD70108C-10のリマーク品である可能性が高い。</div><div>　確認のためにV20HLを10MHzでASCIIART.BASを二時間連続で走らせると５個ともPASSした。</div><div>追記：12MHzでもPASSした。V20HLの12MHz品の可能性がある（<a  target="_blank" href="https://twitter.com/haserin09">はせりん</a>さんより）<br /></div><br /><div>　LSIの動作周波数の上限を決めるものとしてクリティカルパスというのがある。内部の論理でいちばんタイミング的に厳しい部分が足を引っ張ってしまう。SBCV20のBASICは8080エミュレーションモードで動作していることを考えると、ノーマルV20の8080エミュレーションモードのどこかにクリティカルパスがありそうな気がする。</div><div>　また、V20は8088と差し替えクロックジェネレータも交換して12MHz動作でPCXT互換機を売っていた頃があるので実力でそのくらいで動きそうではあるが、残念ながら12MHzの発振子を持っていない。<br /></div><br /><div>　ということでこれ以上はV20HLの良品がないと確認できないのでどなたか挑戦してみてください。いちおう別のところからオーダーしてみましたが本物が来るかどうか……</div><br /><br /><div>skyriverさんのコメントを受けて写真追記：</div><br /><div>uPD70108C-10 本物</div><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/7/a/7a740733.jpg" title="IMGP3701" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/7/a/7a740733-s.jpg" alt="IMGP3701" class="pict" width="480" hspace="5" height="360" border="0"></a><br /><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/c/6/c60175c8.jpg" title="IMGP3702" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/c/6/c60175c8-s.jpg" alt="IMGP3702" class="pict" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>uPD70108HCZ-16 ？ (白字は私が書き込んだもの) ebay経由adeleparts2010より5個セット<br /></div><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/0/2/02fd52c0.jpg" title="IMGP3703" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/0/2/02fd52c0-s.jpg" alt="IMGP3703" class="pict" width="480" hspace="5" height="360" border="0"></a><br /><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/2/c/2c06c948.jpg" title="IMGP3704" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/2/c/2c06c948-s.jpg" alt="IMGP3704" class="pict" width="480" hspace="5" height="360" border="0"></a><br /><br /></div>uPD70108HCZ-16 16MHzでは動作せず12MHz OKebay経由CHIPS GATEより<br /><a  target="_blank" title="IMGP3705" href="https://livedoor.blogimg.jp/hardyboy/imgs/4/a/4abd5fe8.jpg"><img  class="pict" alt="IMGP3705" src="https://livedoor.blogimg.jp/hardyboy/imgs/4/a/4abd5fe8-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><a  target="_blank" title="IMGP3706" href="https://livedoor.blogimg.jp/hardyboy/imgs/d/1/d188b4eb.jpg"><img  class="pict" alt="IMGP3706" src="https://livedoor.blogimg.jp/hardyboy/imgs/d/1/d188b4eb-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /><br /><br /><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  target="_blank" href="https://www.amazon.co.jp/dp/B0777JMZLG?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi"><img  class="pict" style="margin-right:10px" alt="マルチカッターVシリーズ サラダセット" src="https://m.media-amazon.com/images/I/51g5UCGSynL._SL160_.jpg" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/B0777JMZLG?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi">マルチカッターVシリーズ サラダセット</a></div><div  class="itemSubTxt">TSUBASA CORPORATION</div></div><br /></div><br /><br /><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9748626.html">
<title>SBCV20とクロックジェネレータ</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9748626.html</link>
<description>　電脳伝説さんのSBCV20キットが発売になりました。SBCV20専用プリント基板(オレンジピコショップ)SBCV20 ルーズキット(switch science)　技術資料とデータパックはそれぞれの商品説明のページにリンクされている。これによるとV20の代わりに8080を動かすためにはクロックジ...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2021-01-24T19:42:58+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　電脳伝説さんのSBCV20キットが発売になりました。</div><div></div><br /><div><a  target="_blank" href="https://store.shopping.yahoo.co.jp/orangepicoshop/pico-a-037.html">SBCV20専用プリント基板</a>(オレンジピコショップ)<br /></div><div><a  target="_blank" href="https://www.switch-science.com/catalog/6902/">SBCV20 ルーズキット</a>(switch science)</div><br /><div>　技術資料とデータパックはそれぞれの商品説明のページにリンクされている。これによるとV20の代わりに8080を動かすためにはクロックジェネレータをuPD71011Cから8284Aに交換し、クロックを分周してUSARTの通信用クロックを作っている74HC4040のタップを切り替える。これは8088がデューティ比1:2のクロックを必要とするのでi8284Aが大元のクロックを÷3するため。V20は1:1のクロック入力でuPD71011Cは÷2。昔8086搭載パソコンにV30を差し替えるのが流行ったけどクロックジェネレータまでは交換してなかったのでタイミング的には実力で動いていた模様。</div><br /><div>　さて<a  target="_blank" href="https://www.gdm.or.jp/crew/2020/0619/352672">8088は昨年秋葉原でなぜか新品と思われるものが店に並び</a>、とある方から地方在住の私宛に送っていただいたので動かそうと思ったのだけど上記の変更に加え水晶振動子を14.7456MHzに交換しなければならない。これは準備していなかったのだがUSARTの通信クロックを独立させればと以前やった『<a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/9721464.html">SBC8080SUBボードのクロックをPICで</a>』と同じ手を使った。</div><br /><div><a  target="_blank" title="2021-01-24 17.57.02" href="https://livedoor.blogimg.jp/hardyboy/imgs/e/a/eac892f8.jpg"><img  class="pict" alt="2021-01-24 17.57.02" src="https://livedoor.blogimg.jp/hardyboy/imgs/e/a/eac892f8-s.jpg" width="480" hspace="5" height="270" border="0"></a><br /></div><br /><div>　74HC4040の代わりに小基板をつけて、osc1536.hexをPIC12F1822に書き込み搭載。osc1536.hexについては『モトローラ6800伝説』と<a  target="_blank" href="https://www.switch-science.com/catalog/3581/">SBC6800ルーズキット</a>を参照のこと。</div><br /><div>　配線はこちら。</div><div><a  target="_blank" title="2021-01-24 19.38.25" href="https://livedoor.blogimg.jp/hardyboy/imgs/1/0/10c9e342.jpg"><img  class="pict" alt="2021-01-24 19.38.25" src="https://livedoor.blogimg.jp/hardyboy/imgs/1/0/10c9e342-s.jpg" width="480" hspace="5" height="853" border="0"></a><br /></div><br /><div>　PIC12F1822をICソケット経由で実装するとすぐ下になる抵抗とダイオードに干渉するけどちょっと浮くだけだしまあいいか。<br /></div><div><a  target="_blank" title="2021-01-24 17.58.04" href="https://livedoor.blogimg.jp/hardyboy/imgs/d/7/d720c02f.jpg"><img  class="pict" alt="2021-01-24 17.58.04" src="https://livedoor.blogimg.jp/hardyboy/imgs/d/7/d720c02f-s.jpg" width="480" hspace="5" height="853" border="0"></a><br /></div><br /><br /><div>　さて、これでよかろうと動作確認してみたら文字化け。</div><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/6/f/6fcf5435.jpg" title="2020-12-30 12.19.48" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/6/f/6fcf5435-s.jpg" alt="2020-12-30 12.19.48" class="pict" width="480" hspace="5" height="853" border="0"></a><br /><br /></div><br /><div>　クロックは周波数カウンタで確認してちゃんと出てるけどなんでだろうか？</div><br /><div><blockquote  class="twitter-tweet"><a  target="_blank" href="https://twitter.com/vintagechips"><span  class="avatar"><img  src="https://pbs.twimg.com/profile_images/960437553911312386/Nlk51suI_normal.jpg"></span><span  class="fn">電脳伝説</span><span  class="nickname">@vintagechips</span></a><p>SBCV20の8088版で起きるさまざまな問題の根本的な原因が判明しました。uPD71011に必要な水晶まわりのコンデンサが、8284だと不要でした。取り去ったら安定して発振し、完璧に動作しました。 <a  target="_blank" href="https://t.co/Vnc9itmW1u">https://t.co/Vnc9itmW1u</a></p><a  target="_blank" href="https://twitter.com/vintagechips/status/1344111269893160961">2020/12/30 11:41:13</a></blockquote></div><br /><div>　これはクロックジェネレータがバイポーラかCMOSかの違いで水晶振動子の両端を抵抗でGNDに落とすか10pFのコンデンサで落とすか処理が異なっていたのが原因。これは知らなかった。</div><br /><div>　データシートを見るとバイポーラの8284Aだと510Ωの抵抗で水晶振動子の両端をGNDに落としている。</div><div><a  target="_blank" title="スクリーンショット 2021-01-24 18.55.54" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/f/af9772e5.jpg"><img  class="pict" alt="スクリーンショット 2021-01-24 18.55.54" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/f/af9772e5-s.jpg" width="480" hspace="5" height="267" border="0"></a><br /><br /></div><div>　このあたり気になったのでFM-11の8088カードで確認したら同様だった。ただしVccにつなぐ30pFのコンデンサはなかった。</div><br /><div>　SBCV20基板の10pFコンデンサの足をカットし、裏面に抵抗(680Ω)を付けて動作OK。<br /></div><div><a  target="_blank" title="2021-01-24 17.57.17" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/7/a7ff26ba.jpg"><img  class="pict" alt="2021-01-24 17.57.17" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/7/a7ff26ba-s.jpg" width="480" hspace="5" height="270" border="0"></a></div><br /><div><a  target="_blank" title="2020-12-30 22.07.36" href="https://livedoor.blogimg.jp/hardyboy/imgs/d/a/da3ab202.jpg"><img  class="pict" alt="2020-12-30 22.07.36" src="https://livedoor.blogimg.jp/hardyboy/imgs/d/a/da3ab202-s.jpg" width="480" hspace="5" height="853" border="0"></a><br /><br /></div><br /><div><br /><div><a  target="_blank" href="https://www.renesas.com/jp/ja/search?keywords=uPD71011">UPD71011データシート</a>(renesas)を見るとコンデンサで処理してある。8284Aと動作が同じuPD71084を使う場合はCMOSなのでuPD71011Cと同様にしなければならない。</div><br /><a  target="_blank" href="https://electrelic.com/electrelic/node/215">参考：V20/V30の周辺デバイス</a>(Electrelic)</div><br /><br /><div>
<br /></div><br /><br /><br /><br /><br /><br /><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9726545.html">
<title>SBCF8の組み立て</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9726545.html</link>
<description>　aitendoにスポット入荷したFairchild F8。私は二巡目で入手した。このままではただのコレクションになってたところを電脳伝説さんのSBCF8を組み立てる機会に恵まれたのでやってみた。　SBCF8はSBC8080と同様にSBC8080SUBボード上のメモリとUARTを使用する。また、今回から...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-12-14T22:36:33+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　aitendoにスポット入荷した<a  target="_blank" href="https://en.wikipedia.org/wiki/Fairchild_F8">Fairchild F8</a>。私は二巡目で入手した。このままではただのコレクションになってたところを<a  target="_blank" href="https://vintagechips.wordpress.com/category/f8/">電脳伝説さんのSBCF8</a>を組み立てる機会に恵まれたのでやってみた。</div><br /><div>　SBCF8はSBC8080と同様にSBC8080SUBボード上のメモリとUARTを使用する。また、今回からはバス上で使用したかったため<a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/9721464.html">SBC-BUS Rev.02とそれにコネクタをあわせたSBC8080SUBボード</a>を先に作った。<br /></div><div>　SBCF8はSBC8080と同等の5V→12V昇圧回路があるが部品を探し出すのが面倒だったため秋月電子から購入したDCDCコンバータを使用した。これは±12V出力のものだが手持ちでこれしかなかったため。ちょっと割高。</div><div>ほぼ部品は手持ちでOKだったが2MHzの水晶振動子は別に入手。4MHz以下くらいの水晶振動子は入手しずらくなっている感じ。<br /></div><div><a  target="_blank" title="2020-11-28 04.08.17" href="https://livedoor.blogimg.jp/hardyboy/imgs/9/c/9c3f5f7e.jpg"><img  class="pict" alt="2020-11-28 04.08.17" src="https://livedoor.blogimg.jp/hardyboy/imgs/9/c/9c3f5f7e-s.jpg" width="480" hspace="5" height="853" border="0"></a><br /><br /></div><div>　さて動作確認をしたのだが動かず。２つの問題点があって、ひとつはSBC-BUSに1つずれて挿入していたこと。これでも電源ははいってしまうので気付くのが遅れた。もうひとつはDCDCコンバータの配線が切れてしまっていたことでVGG(+12V)が供給されていなかった。ここではついでにDCDCコンバータ前後のコンデンサを余裕がなかったかな？程度の考えで3.3uF→33uFに交換している。</div><div><a  target="_blank" title="2020-12-07 00.58.47" href="https://livedoor.blogimg.jp/hardyboy/imgs/e/0/e0949940.jpg"><img  class="pict" alt="2020-12-07 00.58.47" src="https://livedoor.blogimg.jp/hardyboy/imgs/e/0/e0949940-s.jpg" width="480" hspace="5" height="853" border="0"></a><br /><a  target="_blank" title="2020-11-28 04.08.17" href="https://livedoor.blogimg.jp/hardyboy/imgs/9/c/9c3f5f7e.jpg"></a><br />TINY BASICが動きました。<br /></div><div><a  target="_blank" title="2020-12-07 00.59.48" href="https://livedoor.blogimg.jp/hardyboy/imgs/1/5/15e492f0.jpg"><img  class="pict" alt="2020-12-07 00.59.48" src="https://livedoor.blogimg.jp/hardyboy/imgs/1/5/15e492f0-s.jpg" width="480" hspace="5" height="853" border="0"></a><br /></div><br /><div>USB電源アダプタを使用して、消費電力は5.14V/0.25Aで約1.3W。<br /></div><div><a  target="_blank" title="IMGP3683" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/b/ab10c122.jpg"><img  class="pict" alt="IMGP3683" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/b/ab10c122-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　ついでにVGG/VCC確認用のLEDを追加。<br /></div><div><a  target="_blank" title="IMGP3689" href="https://livedoor.blogimg.jp/hardyboy/imgs/3/8/38b5c7cd.jpg"><img  class="pict" alt="IMGP3689" src="https://livedoor.blogimg.jp/hardyboy/imgs/3/8/38b5c7cd-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　これで12Vを確認。<br /></div><div><a  target="_blank" title="IMGP3686" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/d/ad0fbef8.jpg"><img  class="pict" alt="IMGP3686" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/d/ad0fbef8-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　電脳伝説さんありがとうございました。<br /></div><br /><br /><br /><div>F8関連で探した資料は以下：<br /><br /><div>http://aitendo3.sakura.ne.jp/aitendo_data/product_img/ic/MOSTEK/MOSTEK_Microcomputer_Data_Book.pdf<br /></div><br />http://datasheets.chipdb.org/Fairchild/F8/fairchild-3850.pdf<br /></div><br /><div>www.bitsavers.org/components/fairchild/f8/F8_prelimUM_Jan75.pdf<br /></div><br /><div>https://www.chessprogramming.org/Fairchild_F8<br /><br />https://orphanedgames.com/videobrain/f8_programming/f8_programming.htm<br /></div><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9697754.html">
<title>Fenestra6502の石数削減の検討</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9697754.html</link>
<description>　@hatsugaiさんのFenestra6502。既存の6502にレジスタウィンドウ的なメカニズムを外付けして、関数呼び出しでの引数/結果の受け渡しに関わるコストを劇的に改善している。　引数の受け渡しおよびローカルな作業エリアはダイレクトページ上に確保し、関数呼び出しとリターン...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-10-20T01:45:53+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　<a  target="_blank" href="https://twitter.com/hatsugai">@hatsugai</a>さんの<a  target="_blank" href="https://github.com/hatsugai/Fenestra6502">Fenestra6502</a>。既存の6502にレジスタウィンドウ的なメカニズムを外付けして、関数呼び出しでの引数/結果の受け渡しに関わるコストを劇的に改善している。</div><div>　引数の受け渡しおよびローカルな作業エリアはダイレクトページ上に確保し、関数呼び出しとリターンに対応するJSR/RTS命令でこれらの領域がずれて割当てられる。256バイトのダイレクトページは以下の割当て。</div><br /><div>%i $00-$3F 　呼び出し元からの引数。RTSでもどる前に結果をここに置く。<br /></div><div>%l $40-$7F　ローカル作業エリア。<br /></div><div>%o $80-$BF　JSRで呼び出す先の引数を与える。JSR先では%iで参照。<br /></div><div>%g $C0-$FF　グローバルエリア JSR/RTSで割当ては変化せず。</div><br /><div>%i,%l,%o,%gはSPARCアーキテクチャのレジスタウィンドウに合わせた分類で、役割も同様。</div><div><span  class="css-901oao css-16my406 r-1tl8opc r-ad9z0x r-bcqeeo r-qvutc0">JSR前の$80-$BFが飛び先では$00-$3Fに対応する。</span></div><br /><div>他にレジスタウィンドウを持つアーキテクチャはAMD Am29000、Intel i960、Intel Itanium、クヌースのMMIX。HITACHI H16も似たようなメカニズムを持つ。</div><br /><div>　Fenestra6502の仕組みについて。128Kバイトのメモリについて、$100C0~$1FFFFを65C02のアドレス空間に割り当てている。65C02の$0000~$00BF(192バイト)については外付けの回路でアドレス変換を行い、$00000~をダイレクトページ領域として割り当てている。</div><div>　アドレス変換はJSR命令で+1、RTS命令で-1するアップダウンカウンタを持ち、ダイレクトページをアクセスするアドレス$0000-$00BFとこのカウンタの値(7bitオフセット：x128)を加算し128Kバイトのメモリ$00000~に変換する。</div><div>　カウンタは65C02のスタックが256バイトしかないので、0~127の7bitで充分。(JSR命令で2バイトのアドレスをスタックに積むため)</div><br /><br /><div>　Fenestra6502のハードウェアはW65C02Sと制御用のATMEGA164P、128Kx8 SRAM 628128。GAL 22V10 x2、LS74、LS191 x2、LS283 x2、LS257 x2。10cm x 10cmの基板に収めるのはちょっときびしい気がする。GALを活用すればさらに石の数を減らせるんじゃないかと検討してみた。</div><br /><div>　Fenestra6502の回路図。(2020/10/14 Rev, 1.2)</div><div><a  target="_blank" title="Fenestra6502" href="https://livedoor.blogimg.jp/hardyboy/imgs/e/2/e24ff097.png"><img  class="pict" alt="Fenestra6502" src="https://livedoor.blogimg.jp/hardyboy/imgs/e/2/e24ff097-s.png" width="480" hspace="5" height="328" border="0"></a><br /><br /></div><br /><div>検討１：U6 LS74の削減</div><br /><div>　INSTDEC(GAL 22V10)はJSR/RTS命令をデコードして次段のLS191に対しカウントアップ/ダウンの指示をしている。このカウンターへの指示はLS74で1サイクル分保持されている。この程度ならINSTDECに吸収できそうだ。<br /></div><br /><div><a  target="_blank" href="https://gist.github.com/houmei/c130e530cd21b937e0c2ab692abbc41a">https://gist.github.com/houmei/c130e530cd21b937e0c2ab692abbc41a</a> INST22Q.PLD</div><br /><div>　FFの初期化のためのRESETを追加。これでU6 LS74をなくすことができる。</div><br /><br /><div>検討２：デコーダとカウンタの統合</div><br /><div>　カウンターは7bitあればよい。これと命令デコード部分を１つのGALでできないか？</div><div>　SYNC信号は命令フェッチのタイミングを示す。この立ち下がりのタイミングでデータバスに乗る命令をデコードし、そのままカウンタのアップ/ダウンを指示すればいけそうな気がする。SYNC信号を反転してその立ち上がりで動かせばよさそう。こういうのは昔の汎用ロジックの使い方っぽい。SYNC信号は!SYNCOUTとして反転出力し、それをGAL 22V10のCLK入力に与える。<br /></div><div>　命令デコードは8bitのデータバスを扱うためこれをそのままカウンタ回路につなごうとすると項数オーバーでパンクしてしまう。そこでデコード結果はいったんDU,CTEN出力として割り当て、フィードバックループでぐるっと回して入力信号に与える。<br /></div><div>　これで命令デコーダとカウンタはGAL 1個に入った。検討1での代わりに使うとLS74、LS191 x2の計3個を削減できる。そのかわりWR/RDなどの信号が扱えなくなるがこれは後で別のGALに追い出す。</div><br /><div><a  target="_blank" href="https://gist.github.com/houmei/15200ba5cba0b7c1f2282d67f5fabcfa">https://gist.github.com/houmei/15200ba5cba0b7c1f2282d67f5fabcfa</a> CT7INS22.PLD<br /></div><br /><br /><div>検討３：加算器をインクリメンタに変更</div><br /><div>　カウンタの出力7bitはアドレスA[13:7]に対応する。これにゼロページの変換対象となるアドレス$0000~$00BFが加算されるが、この下7bit A[6:0]はそのままスルーでA[7]のみカウンタの値と加算される。これは全加算器ではなく+1インクリメンタで充分。<br /></div><div>A[14]はカウンタの値が繰り上がった時に'1'だけど実質常に'0'。A[15]は常に'0'。</div><div>SRAMに与えるアドレスYA7はGALのU4 ADDRDECで生成しているRA7と同等のもの。端子が空いていたので配線の都合がよいように定義しただけ。</div><div>インクリメンタが出力するアドレスY15~Y8(ついでにY7)はOEでアウトプットイネーブルの制御を行う。これに65C02からのA15~A8を接続したLS245(新規追加)の出力をSEL信号で選択することによりアドレス変換/無変換後のアドレスをSRAMに与えることができ、LS257 x2を削減できる。</div><div>　これで従来の加算器とアドレスセレクタはLS283 x2とLS257 x2の4個を削減、GAL +1、LS245+1。<br /></div><br /><div><a  target="_blank" href="https://gist.github.com/houmei/61b1b5b993d6b3e78fe0186cc4cafa8f">https://gist.github.com/houmei/61b1b5b993d6b3e78fe0186cc4cafa8f</a> INC128.PLD<br /></div><br /><br /><div>検討４：その他の論理</div><br /><div>　検討２ではみ出てしまった RAM OEとRAM WEをGAL ADDRDEC(22V10)に押し込む。</div><br /><div><a  target="_blank" href="https://gist.github.com/houmei/552cdbcd841df929079a73506b85517e">https://gist.github.com/houmei/552cdbcd841df929079a73506b85517e</a> ADDR22.PLD<br /></div><br /><div>これで最終的にGAL 22V10 x3、LS245 x1になった。あとはレイアウトの都合で端子の配置を手直しすればよさそう。</div><br /><br /><br /><div>※これは机上での検討のみで実際には作っていませんのでご注意ください。</div><br /><br /><br /><div>　えっamazonにあるの？<br /></div><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  target="_blank" href="https://www.amazon.co.jp/dp/B08KXW1JML?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi"><img  class="pict" style="margin-right:10px" alt="5pcs / lot GAL22V10B-15PC GAL22V10B 22V10 DIP-24在庫あり" src="https://m.media-amazon.com/images/I/31LLJyqpBqL._SL160_.jpg" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/B08KXW1JML?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi">5pcs / lot GAL22V10B-15PC GAL22V10B 22V10 DIP-24在庫あり</a></div><div  class="itemSubTxt">YA13-JP-R015903</div></div><br  style="clear:left" clear="left"><br /></div>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9686742.html">
<title>Z80に68系の周辺LSIをつなぐ(調査)</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9686742.html</link>
<description>　調べ物をしていてたまたま見つけたのだが、Z80に68系の周辺LSIを接続している例を見つけた。　これはAKAIのサンプラーS612の回路図。~IORQの反転がACIA HD6850PのEクロックとして与えられている。~IOREQはZ80のI/O空間へのアクセス時にenableになる信号で定期的に出ている...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-10-09T23:08:01+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　調べ物をしていてたまたま見つけたのだが、Z80に68系の周辺LSIを接続している例を見つけた。</div><br /><div><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/5/3/536f1d07.jpg" alt="スクリーンショット 2020-10-08 1.24.53" class="pict" width="218" hspace="5" height="370" border="0"><br /></div><br /><div>　これはAKAIのサンプラーS612の回路図。~IORQの反転がACIA HD6850PのEクロックとして与えられている。~IOREQはZ80のI/O空間へのアクセス時にenableになる信号で定期的に出ているわけではない。</div><div>　似たような回路でSHARP X1ではCRTC HD46505のレジスタの読み書き時のみE入力に一発パルスが与えられるようになっている。</div><div><a  href="http://www.x1center.org/resource/schematic.html" target="_blank">http://www.x1center.org/resource/schematic.html</a><br /></div><br /><div>　これ規格を満たしていないんじゃ？と思ったけどHD6850PはEクロックのHの幅とLの幅は最小値だけ定義していて最大値はないのでこれでいいらしい。MC6850も同様だった。ACIAは送受信用のクロック、CRTCはビデオタイミング用のクロックを外部から与えるのでCPU側から読み書きするEクロックはこれでもよいみたい。<br /></div><br /><div>　Z80のCLKに対して~MREQは2サイクル分、~IORQは3サイクル分enableになるのでZ80-4MHzに対して68系の周辺LSIは1MHz品で良さそう。(I/O空間の場合はZ80-6MHzまで)</div><br /><br /><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  target="_blank" href="https://www.amazon.co.jp/dp/B07W747V1Q?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi"><img  class="pict" style="margin-right:10px" alt="1個セット MC6850P MC6850 DIP-24" src="https://m.media-amazon.com/images/I/31jqCsVIGlL._SL160_.jpg" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/B07W747V1Q?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi">1個セット MC6850P MC6850 DIP-24</a></div><div  class="itemSubTxt">Lufasa</div></div><br  style="clear:left" clear="left"><br /></div>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9683777.html">
<title>PLDR6502：SBC6800で6502を動かすボード</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9683777.html</link>
<description>　電脳伝説さんのSBC6800をベースにCPU部分を差し替えるだけで6502にするドータボード、PLDR6502を作りました。※PLDR6502基板配布中です。twitter経由でご連絡ください。ほうめい　マイコンで遊んでばっかりで@houmeiSBC6800用の6502ボード、PLDR6502を少数ですが無償で配布...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-10-01T20:02:24+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　電脳伝説さんの<a  target="_blank" href="https://www.switch-science.com/catalog/3581/">SBC6800</a>をベースにCPU部分を差し替えるだけで6502にするドータボード、PLDR6502を作りました。</div><br /><br /><div>※PLDR6502基板配布中です。twitter経由でご連絡ください。</div><div><blockquote  class="twitter-tweet"><a  href="https://twitter.com/houmei" target="_blank"><span  class="avatar"><img  src="https://pbs.twimg.com/profile_images/1112623837617635328/LjXlJFeB_normal.jpg"></span><span  class="fn">ほうめい　マイコンで遊んでばっかりで</span><span  class="nickname">@houmei</span></a><p>SBC6800用の6502ボード、PLDR6502を少数ですが無償で配布します。希望される方はDMにて送付先の郵便番号・住所・氏名をご連絡ください。定形外郵便にて発送予定。基板に製造上の不良があった場合はゴメンね。SBC6800を… <a  href="https://t.co/leMsxS9Es7" target="_blank">https://t.co/leMsxS9Es7</a></p><a  href="https://twitter.com/houmei/status/1313052388421296130" target="_blank">2020/10/05 18:44:19</a></blockquote><br />
<br /></div><br /><div>・<a  href="http://blog.livedoor.jp/hardyboy/archives/9597269.html" target="_blank">SBC6800を改造して6502を動かす</a></div><div>・<a  href="http://blog.livedoor.jp/hardyboy/archives/9597946.html" target="_blank">SBC6800を改造せずに6502を動かす＆unimon_6502の移植</a></div><br /><div>上記改造については各所で追試していただきました。</div><br /><div><a  target="_blank" href="https://kuninet.org/2020/04/12/6502cpu%e3%81%a7%e3%83%9e%e3%82%a4%e3%82%b3%e3%83%b3%e3%83%9c%e3%83%bc%e3%83%891/">6502CPUでマイコンボード(1)</a>(KUNINET BLOG)<br /></div><div><a  target="_blank" href="https://vintagechips.wordpress.com/2020/04/15/sbc6800%E3%81%AE%E3%83%97%E3%83%81%E6%94%B9%E9%80%A0%E3%81%A76502%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99/">SBC6800のプチ改造で6502を動かす</a>(電脳伝説)<br /></div><div><a  target="_blank" href="https://electrelic.com/electrelic/node/1384">SBC6800で6502を</a>(Electrelic<b><span> </span></b>電子的遺物の世界へようこそ)<br /></div><br /><div>　PLDR6502はSBC6800上の6800を外して代わりに取り付けるだけで6502ボードにすることができます。以前行ったLS138の改造は不要です。</div><br /><br /><br /><div><span  style="font-size: 150%;">- PLDR6502回路図 -</span><br /></div><br /><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/3/a/3a5a654a.png" title="PLDR6502V01L01-sch" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/3/a/3a5a654a-s.png" alt="PLDR6502V01L01-sch" class="pict" width="480" hspace="5" height="449" border="0"></a><br /></div><div>・W65C02S-RDYはR1でプルアップ/NMOS 6502、R65C02では~HALT。J4ショートで接続可(通常オープン)</div><div>・W65C02S-VPBはJ3オープン/NMOS 6502、R6502はJ3ショートで電源接続(実際にはオープンのままでも問題ない)<br /></div><div>・プルアップ抵抗R3はSBC6800側LS138に与えられるVMA信号の代わりで常にenableにする</div><div>・R5~R12はW65C02Sのデータバスプルアップ用。省略可</div><div>・パスコンC1は省略可</div><br /><br /><div><span  style="font-size: 150%;">- 組み立て -</span><br /></div><br /><div>　PLDR6502は秋月電子C基板サイズ(72x47mm)です。<br /></div><a  target="_blank" title="2020-09-28 16.08.37" href="https://livedoor.blogimg.jp/hardyboy/imgs/1/c/1c4e5b89.jpg"><img  class="pict" alt="2020-09-28 16.08.37" src="https://livedoor.blogimg.jp/hardyboy/imgs/1/c/1c4e5b89-s.jpg" width="480" hspace="5" height="270" border="0"></a><br /><br /><div>必要な部品：</div><div>丸ピン40P ICソケット x1</div><div>40P ICソケット x1</div><div>40P 連結ピン x1<br /></div><div>抵抗 3.3K〜10KΩ x4 または4素子集合抵抗<br /></div><br /><br /><div>　裏面のSBC6800との接続部分に丸ピンICソケットをハンダ付け後、ソケットの桟を切断。ICソケットは脆いものもあるので注意。<br /></div><a  target="_blank" title="IMGP3640" href="https://livedoor.blogimg.jp/hardyboy/imgs/1/b/1ba98786.jpg"><img  class="pict" alt="IMGP3640" src="https://livedoor.blogimg.jp/hardyboy/imgs/1/b/1ba98786-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /><div>&nbsp;　基板の表側に先程ハンダ付けしたICソケットのピンがこれからハンダ付けする6502用のICソケットと干渉するので切り詰める。<br /></div><div><a  target="_blank" title="IMGP3641" href="https://livedoor.blogimg.jp/hardyboy/imgs/d/e/de5a51b2.jpg"><img  class="pict" alt="IMGP3641" src="https://livedoor.blogimg.jp/hardyboy/imgs/d/e/de5a51b2-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　40P ICソケットとプルアップ抵抗R1~R4をハンダ付け。ここでは集合抵抗を使用。<br /></div><div><a  target="_blank" title="IMGP3642" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/9/a9027b3f.jpg"><img  class="pict" alt="IMGP3642" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/9/a9027b3f-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　これを動作するSBC6800上の6800と交換して連結ソケットを使い取り付け。ROMも6502用のものに交換。<br /></div><div><a  target="_blank" title="IMGP3644" href="https://livedoor.blogimg.jp/hardyboy/imgs/b/5/b540b443.jpg"><img  class="pict" alt="IMGP3644" src="https://livedoor.blogimg.jp/hardyboy/imgs/b/5/b540b443-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　これは集合抵抗を使わずバラの抵抗を使った例。<br /></div><div><a  target="_blank" title="IMGP3646" href="https://livedoor.blogimg.jp/hardyboy/imgs/c/1/c12ddab6.jpg"><img  class="pict" alt="IMGP3646" src="https://livedoor.blogimg.jp/hardyboy/imgs/c/1/c12ddab6-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　連結ソケットを直接ハンダ付けして取り付けることもできますが、SBC6800のDIP部品をソケット経由で取り付けている場合少し干渉します。ハンダ面から突き出たピンをカット。</div><div><a  target="_blank" title="IMGP3647" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/1/a1040a49.jpg"><img  class="pict" alt="IMGP3647" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/1/a1040a49-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　丸ピンICソケットをPLDR6502の裏面に取り付け、SBC6800との間を連結ピンで接続すれば干渉しません。</div><div><a  target="_blank" title="IMGP3649" href="https://livedoor.blogimg.jp/hardyboy/imgs/c/5/c57cd25b.jpg"><img  class="pict" alt="IMGP3649" src="https://livedoor.blogimg.jp/hardyboy/imgs/c/5/c57cd25b-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>連結ピンは以下のもので確認しました。(いずれも秋月電子)</div><div>【P-00269】　丸ピンＩＣ用連結ソケット（両端オスピン・１列２０Ｐ）　１×２０<br />
【P-00268】　連結ソケット（両端オスピン）４０Ｐ</div><br /><br /><br /><div>　設計データ一式は<a  href="https://inventhub.io/houmei/PLDR6502/tree/master" target="_blank">inventhub</a>で公開しています(KiCad 5.1.6)。PLDR6502V01L01.zipはガーバー一式でこれをそのまま<a  href="https://www.pcbgogo.jp/" target="_blank">pcbgogo</a>に発注できます。</div><br /><div>※inventhubはプリント基板の配置配線を表示できますが.jpgや.pngを今のところ直接表示できません。</div><br /><br /><div>　さて最後に。この基板の名前は<span  style="font-size: 150%;"><b>パイルダー6502</b></span>と呼ぶんじゃ。これが言いたかった……</div><br /><br /><div  class="amazon Default"><div  class="pictBox" align="left"><a  target="_blank" href="https://www.amazon.co.jp/dp/B001UFVK26?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi"><img  class="pict" style="margin-right:10px" alt="ポピニカ魂 PX-04 ホバーパイルダー" src="https://m.media-amazon.com/images/I/519PdglPDTL._SL160_.jpg" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/B001UFVK26?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi">ポピニカ魂 PX-04 ホバーパイルダー</a></div><div  class="itemSubTxt">BANDAI SPIRITS(バンダイ スピリッツ)</div><div  class="itemSubTxt">2009-06-27</div></div><br  style="clear:left" clear="left"><br /><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9625150.html">
<title>FM77AV用Z80Hカード韋駄天の回路図訂正と補足と蛇足</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9625150.html</link>
<description>　I/O 1987年10月号、1987年11月号および6809活用研究(工学社)に掲載された韋駄天CP/M Z80Hカード。回路図に誤りがあってその後訂正も掲載されず、紙の資料も紛失してしまったので実物から正しい回路図を起こした。　部品面　はんだ面　レイアウト　回路図　回路図は実物から...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-06-20T18:36:44+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[　I/O 1987年10月号、1987年11月号および6809活用研究(工学社)に掲載された韋駄天CP/M Z80Hカード。回路図に誤りがあってその後訂正も掲載されず、紙の資料も紛失してしまったので実物から正しい回路図を起こした。<br /><br />　部品面<br /><div><a  target="_blank" title="IMGP3592" href="https://livedoor.blogimg.jp/hardyboy/imgs/d/4/d457e563.jpg"><img  class="pict" alt="IMGP3592" src="https://livedoor.blogimg.jp/hardyboy/imgs/d/4/d457e563-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　はんだ面<br /></div><div><a  target="_blank" title="IMGP3593" href="https://livedoor.blogimg.jp/hardyboy/imgs/2/6/2612d774.jpg"><img  class="pict" alt="IMGP3593" src="https://livedoor.blogimg.jp/hardyboy/imgs/2/6/2612d774-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　レイアウト<br /></div><div><a  target="_blank" title="IDATEN-Z80H-LAYOUT" href="https://livedoor.blogimg.jp/hardyboy/imgs/7/7/7750918a.png"><img  class="pict" alt="IDATEN-Z80H-LAYOUT" src="https://livedoor.blogimg.jp/hardyboy/imgs/7/7/7750918a-s.png" width="480" hspace="5" height="293" border="0"></a><br /></div><br /><div>　回路図</div><div><a  target="_blank" title="IDATEN-Z80H-SCH" href="https://livedoor.blogimg.jp/hardyboy/imgs/2/9/297738c3.png"><img  class="pict" alt="IDATEN-Z80H-SCH" src="https://livedoor.blogimg.jp/hardyboy/imgs/2/9/297738c3-s.png" width="480" hspace="5" height="333" border="0"></a><br /><br /></div><div>　回路図は実物からトレースしてそのまま起こした。</div><div>・SRAM(U2,U3)に対する*WEの論理が訂正箇所です。</div><div>・U12のLS02は実質不要で、U10のLS04の空きで代替可能。<br /></div><br />　FM77AVの拡張RAMスロット図（FM-7シリーズ　テクニカルノウハウ 第15章ハードウェア回路図）<br /><div><a  target="_blank" title="IMGP3594" href="https://livedoor.blogimg.jp/hardyboy/imgs/c/3/c36d467e.jpg"><img  class="pict" alt="IMGP3594" src="https://livedoor.blogimg.jp/hardyboy/imgs/c/3/c36d467e-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>補足：</div><div>・6809とZ80Hのやり取りはFM77AV側の$FD64番地と$20000-$2FFFFの拡張RAM領域で行う。</div><div>・FM77AVのリセット後、Z80HはU4A(LS74)によりZ80RESET信号が有効になりリセットがかかったままの状態になる。この解除と再リセットは6809側で制御する。Z80にリセットがかかっている間はZ80のバスがハイインピーダンス状態のままであることを利用している。</div><div>・Z80Hから6809への要求はZ80側のI/O空間ライト動作でSETATTN信号がU4B(LS74)をセットする。6809は$FD64番地のbit0をポーリングしてZ80Hの要求を確認する。Z80Hがバス開放状態(Z80RESETまたはBUSACK)になればZ80BUSY信号が有効になりU4B(LS74)をクリアし要求を取り下げる。</div><div>・6809からZ80Hへのバス開放要求は$FD64のbit7書き込みで制御する。</div><div>・6809から$FD64のbit6,bit5に"1"書き込みでZ80HへNMI/INTを発生させる。</div><div>・バス開放要求/割り込み要求はU5(LS175)に保持される。Z80HからのI/O空間アクセス、またはZ80RESETで解除される。<br /></div><div><div>・6809からZ80Hのバス開放状態を確認するには$FD64のbit7を読みZ80BUSYの信号をみる。</div></div><div>・MEMSEL信号は6809から$20000-$2FFFFのRAMをアクセスするときに有効になる。U14(LS138)でデコードして生成。Z80BUSY信号もデコードに入っているのでZ80H動作中は6809から読み書きできない。</div><div>・U2,U3(HM62256)に対するRAMOEはMEMSELまたは!Z80BUSYによるZ80動作中に有効。</div><div>・RAMWEは6809側の書き込み(MEMSEL&amp;RWB)またはZ80Hのメモリライト(WR&amp;MREQ)で有効。</div><div>・Y1(X'tal) 10MHzは実力で動作した。本来は8MHz。<br /></div><br /><div>蛇足：</div><div>・MEMSELを生成しているU14(LS138)にRWBも突っ込んでRAMWE用の信号を作ってもよかったかな？いや無理か。</div><div>・SRAM、OEがenableのままでWEがenableになってもいいんだ…(OE Low Fixed) <a  target="_blank" href="https://pdf1.alldatasheet.jp/datasheet-pdf/view/77314/HITACHI/HM62256.html">HM62256 Datasheet</a><br /></div><div>・当時Z80Hと32KバイトのSRAMは若松通商で買った最先端テクノロジーだ。今なら20MHz動作を狙えるか。</div><div>・master/slaveで言えばリセットが掛けられるZ80は6809に生殺与奪権を握られているけどCP/M動作中はZ80の要求を6809側ですべてこなしてるのよね。<br /></div><div>・記事は３回連載の予定だったが強化版CP/Mが完成せず6809活用研究へと繰り越した。</div><div>・移植元となったX1用ランゲージマスター(CP/M)。ベスト電器に注文して届いたら店員さんが「私もX1使ってるんですよ」と嬉しそうに話しかけてくれたが「すみませんFMユーザーです…」申し訳なかった。</div><div>・初期の動作テストには@minemaz氏に協力してもらった。私Z80書けなかったので。</div><div>・Oh!FM誌に似たようなシステムが掲載されたのでたいへん焦った。同じ時期に同じようなアイデアはあるんだね。</div><div>・記事の反響というか感想すらまったくなかったのでちょっとさみしかった。</div><br /><div>追記：</div><div>・128Kx8のSRAMに交換することを考える。<a  target="_blank" href="https://pdf1.alldatasheet.jp/datasheet-pdf/view/31695/TOSHIBA/TC551001.html">TC551001</a>も<a  target="_blank" href="https://www.alliancememory.com/wp-content/uploads/pdf/AS6C1008feb2007.pdf">AS6C1008</a>もライト時*WEがアサートされる時は*OEはどちらの状態でもよい。<br /></div><br /><br /><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  target="_blank" href="https://www.amazon.co.jp/dp/4899774818?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi"><img  class="pict" style="margin-right:10px" alt="ザイログZ80伝説" src="https://m.media-amazon.com/images/I/41gexfI+QbL._SL160_.jpg" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/4899774818?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi">ザイログZ80伝説</a></div><div  class="itemSubTxt">鈴木哲哉</div><div  class="itemSubTxt">ラトルズ</div><div  class="itemSubTxt">2020-11-25</div></div><br  style="clear:left" clear="left"><br /></div><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9600817.html">
<title>SBC6800+W65C02Sで2MHz動作</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9600817.html</link>
<description>　SBC6800を改造せずにW65C02Sを動かす＆unimon_6502の移植で動作確認できたので動作周波数を上げてみる。手持ちのACIAは68B50、2MHz品なので目標2MHz動作。　SBC6800ではPIC12F1822をクロックジェネレータとして使っている。MC6800用なので相補のφ1(P1A)、φ2を(P1B)ハーフ...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-04-17T01:50:54+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　<a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/9597946.html">SBC6800を改造せずにW65C02Sを動かす＆unimon_6502の移植</a>で動作確認できたので動作周波数を上げてみる。手持ちのACIAは68B50、2MHz品なので目標2MHz動作。</div><div>　SBC6800ではPIC12F1822をクロックジェネレータとして使っている。MC6800用なので相補のφ1(P1A)、φ2を(P1B)ハーフブリッジモードで1MHzを出力しているが、6502用に使っているφ2はハーフブリッジモードでしか出力できない端子(P1B)に割り当てられている。φ1(P1A)側だったらCLKOUTをそのまま使えたみたいだけど。</div><div>　ディレイ設定を使わなければデューティ50で2MHzをφ1側に出力でき、φ2はその反転出力となる。これで無改造で使えそうだ。</div><br /><div>　SBC6800ルーズキットのデータパックより6800crgenのプロジェクトを持ってきてmain.c内の以下を書き換え、MPLABX4.02でビルドした。</div><blockquote><div>PR2 = 3; <br /></div><div>CCPR1L = 2;</div><div>PWM1CON = 0;</div></blockquote><div>　以下にmain.cの差し替えとPIC12F1822書き込み用のHEXファイルを置いた。<br /></div><div><a  href="https://gist.github.com/houmei/9039abb116260d3e83af0bc5a8bcb266" target="_blank">https://gist.github.com/houmei/9039abb116260d3e83af0bc5a8bcb266</a><br /></div><br /><div>　波形観測。OK。<br /></div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/5/1/5130c3cf.jpg" title="IMGP3506" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/5/1/5130c3cf-s.jpg" alt="IMGP3506" class="pict" width="480" hspace="5" height="360" border="0"></a><br /><br /><div>　これを使って動作確認。せっかくなので電脳伝説さんが"<a  href="https://vintagechips.wordpress.com/2020/04/15/sbc6800%e3%81%ae%e3%83%97%e3%83%81%e6%94%b9%e9%80%a0%e3%81%a76502%e3%82%92%e5%8b%95%e3%81%8b%e3%81%99/" target="_blank">SBC6800のプチ改造で6502を動かす</a>"で移植したOSI MS-BASICで確認する。実行速度の確認にASCIIART.BASを使用。</div><div>ASCIIART.BASのソースは以下にある。<br /></div><div><a  href="https://www.retrobrewcomputers.org/forum/index.php?t=msg&amp;th=201&amp;goto=3440&amp;" target="_blank">https://www.retrobrewcomputers.org/forum/index.php?t=msg&amp;th=201&amp;goto=3440&amp;</a><br /></div><br /><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/2/4/245df107.png" title="ASCIIART" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/2/4/245df107-s.png" alt="ASCIIART" class="pict" width="480" hspace="5" height="635" border="0"></a><br /><br /></div><div>　1MHzの実行速度が6分50秒に対して1MHzでは3分25秒とちょうど半分だった。</div><br /><div>※はせりんさんのまとめで他にもいろいろな機種でのASCIIART.BASの実行速度の一覧が確認できます。</div><div><a  href="http://haserin09.la.coocan.jp/asciiart.html" target="_blank">番外編：ASCIIART(マンデルブロ集合)ベンチマーク</a></div><br /><div>　さて、さらに上を目指すには。W65C02Sは14MHzまでOKだがACIAが足を引っ張るためW65C51あたりが必要。ただしMC6850との互換性はない。PICを使えば2/4/8MHzが生成できそうだがその間が難しい。最大動作周波数が40MHzのPICを使えば5/10MHzができるかもしれない。この場合はPICのCLKOUTがダイレクトに出せる端子に修正したほうがよさそう。<br /></div><br /><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  href="https://www.amazon.co.jp/dp/4899774729?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi" target="_blank"><img  src="https://m.media-amazon.com/images/I/51P0GemBqBL._SL160_.jpg" alt="モトローラ6800伝説" style="margin-right:10px" class="pict" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  href="https://www.amazon.co.jp/dp/4899774729?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi" target="_blank">モトローラ6800伝説</a></div><div  class="itemSubTxt">鈴木哲哉</div><div  class="itemSubTxt">ラトルズ</div><div  class="itemSubTxt">2017-12-16</div></div><br  style="clear:left" clear="left"><br /></div><br /><br /><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9600387.html">
<title>YAMAHA RX21Lリズムマシンの分解写真</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9600387.html</link>
<description>　ハードオフで千円で買ってきたヤマハのリズムマシンRX21L。一応動く。中は8bitマイコンでもはいってるんだろうか。YAMAHA RX21L(YAMAHA)https://ja.wikipedia.org/wiki/ヤマハ・RXシリーズ　1985年で42000円。当時のパソコンはFM77AVなどでそのくらいの時期。RX21Lは音源の...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-04-15T21:28:20+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　ハードオフで千円で買ってきたヤマハのリズムマシンRX21L。一応動く。中は8bitマイコンでもはいってるんだろうか。</div><br /><div><a  target="_blank" href="https://jp.yamaha.com/products/music_production/rhythm_programmers/rx21l/index.html">YAMAHA RX21L</a>(YAMAHA)<br /></div><div><a  target="_blank" href="https://ja.wikipedia.org/wiki/%E3%83%A4%E3%83%9E%E3%83%8F%E3%83%BBRX%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA">https://ja.wikipedia.org/wiki/ヤマハ・RXシリーズ</a><br /></div><br /><div>　1985年で42000円。当時のパソコンはFM77AVなどでそのくらいの時期。RX21Lは音源の出力とMIDIに加えカセットテープインターフェースも持っている。リズムパターンをセーブ/ロードできるのでほぼパソコン。<br /></div><div><a  target="_blank" title="IMGP3496" href="https://livedoor.blogimg.jp/hardyboy/imgs/4/3/436051a1.jpg"><img  class="pict" alt="IMGP3496" src="https://livedoor.blogimg.jp/hardyboy/imgs/4/3/436051a1-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>底面のネジを外すだけ。片面基板。</div><div><a  target="_blank" title="IMGP3497" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/f/af5dce22.jpg"><img  class="pict" alt="IMGP3497" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/f/af5dce22-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　音源部。アナログ回路部分はシールドされている。<br /></div><div><a  target="_blank" title="IMGP3498" href="https://livedoor.blogimg.jp/hardyboy/imgs/c/c/cc370d86.jpg"><img  class="pict" alt="IMGP3498" src="https://livedoor.blogimg.jp/hardyboy/imgs/c/c/cc370d86-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　YM2154。</div><div><a  target="_blank" title="IMGP3503" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/c/ac1d76e1.jpg"><img  class="pict" alt="IMGP3503" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/c/ac1d76e1-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　コントローラはHD6303。<br /></div><div><a  target="_blank" title="IMGP3500" href="https://livedoor.blogimg.jp/hardyboy/imgs/c/d/cdc3d963.jpg"><img  class="pict" alt="IMGP3500" src="https://livedoor.blogimg.jp/hardyboy/imgs/c/d/cdc3d963-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　おそらくこれは音源ROM(27128)で差し替えると姉妹機のRX21相当になるのだろう。右は2KバイトのRAM。<br /></div><div><a  target="_blank" title="IMGP3504" href="https://livedoor.blogimg.jp/hardyboy/imgs/3/c/3c0c12bc.jpg"><img  class="pict" alt="IMGP3504" src="https://livedoor.blogimg.jp/hardyboy/imgs/3/c/3c0c12bc-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　キャラクタLCD部分はHD44780。これは現在一般的なキャラクタLCDのコントローラ。<br /></div><div><a  target="_blank" title="IMGP3501" href="https://livedoor.blogimg.jp/hardyboy/imgs/e/f/ef87bafe.jpg"><img  class="pict" alt="IMGP3501" src="https://livedoor.blogimg.jp/hardyboy/imgs/e/f/ef87bafe-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　さて、これですよ。</div><div><a  target="_blank" href="http://www.dtech.lv/techarticles_yamaha_chips.html">http://www.dtech.lv/techarticles_yamaha_chips.html</a> によるとドラム波形のROMらしいのだがにわかには信じられん。片側全部NCで基板レイアウト時に寄せすぎてしまったんだろうか。<br /></div><br /><div><a  target="_blank" title="IMGP3502" href="https://livedoor.blogimg.jp/hardyboy/imgs/c/3/c36a3948.jpg"><img  class="pict" alt="IMGP3502" src="https://livedoor.blogimg.jp/hardyboy/imgs/c/3/c36a3948-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><br /><div>おしまい<br /></div><br /><div>追記：別の人も発見。スレッドにROMの仕様が。</div><div><blockquote  class="twitter-tweet"><a  target="_blank" href="http://twitter.com/plgDavid"><span  class="avatar"><img  src="http://pbs.twimg.com/profile_images/639410928803557376/jlbYRoTZ_normal.jpg"></span><span  class="fn">David Viens</span><span  class="nickname">@plgDavid</span></a><p>Cursed factory serial ROM placement in a Yamaha RX21L drum machine. <a  target="_blank" href="https://t.co/w8y8kJrv9I">https://t.co/w8y8kJrv9I</a></p><a  target="_blank" href="http://twitter.com/plgDavid/status/1275109365125730304">2020/06/23 01:52:17</a></blockquote><br />
<br /></div><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9600052.html">
<title>W65C02S(本物)の動作確認</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9600052.html</link>
<description>　本物のW65C02Sが届いたので確認してみた。(オレンジピコショップ W65C02)https://www.westerndesigncenter.com/wdc/w65c02s-core.cfm　動作確認にはunimonを使用。　WDC W65C02S6TPG-14 A1S000.2 1148G016 / 裏面なし　pin1(VPB)とpin5(MLB)にICソケット経由でLEDをはんだ...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-04-14T20:01:26+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　本物のW65C02Sが届いたので確認してみた。(<a  target="_blank" href="https://store.shopping.yahoo.co.jp/orangepicoshop/pico-i-065.html">オレンジピコショップ W65C02</a>)</div><br /><div><a  target="_blank" href="https://www.westerndesigncenter.com/wdc/w65c02s-core.cfm">https://www.westerndesigncenter.com/wdc/w65c02s-core.cfm</a><br /></div><br /><div>　動作確認には<a  target="_blank" href="https://electrelic.com/electrelic/node/1317">unimon</a>を使用。<br /></div><br /><div>　WDC W65C02S6TPG-14 A1S000.2 1148G016 / 裏面なし<br /></div><div><a  target="_blank" title="IMGP3495" href="https://livedoor.blogimg.jp/hardyboy/imgs/6/9/690122f6.jpg"><img  class="pict" alt="IMGP3495" src="https://livedoor.blogimg.jp/hardyboy/imgs/6/9/690122f6-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　pin1(VPB)とpin5(MLB)にICソケット経由でLEDをはんだ付け。<br /></div><div><a  target="_blank" title="IMGP3492" href="https://livedoor.blogimg.jp/hardyboy/imgs/5/5/55f67e10.jpg"><img  class="pict" alt="IMGP3492" src="https://livedoor.blogimg.jp/hardyboy/imgs/5/5/55f67e10-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><br /><div>(1)IRQ許可でWAI命令　抜けるとBRKでモニタに戻る<br /></div><br /><div>1000: 58 CB EA EA EA 00 // CLI ; WAI ; NOP ; NOP ; NOP ; BRK<br /></div><div><br /></div><div>→ 1000番地より実行で応答なし、IRQ-GNDショートでモニタに戻る</div><br /><div>(2)IRQ禁止でWAI命令　抜けるとBRKでモニタに戻る</div><br /><div><div>1000: 78 CB EA EA EA 00 // SEI ; WAI ; NOP ; NOP ; NOP ; BRK<br /></div><br /></div><div><div>→ 1000番地より実行で応答なし、IRQ-GNDショートでも変化なし。</div><div><br /><br /></div></div><div>(3)STP命令</div><br /><div><div><div>1000: CB EA EA EA 00 // STP ; NOP ; NOP ; NOP ; BRK<br /></div><div><br /><div><div>→ 1000番地より実行で応答なし、IRQ-GNDショートでも変化なし。</div><div><br />(4)MLB信号観測</div><br /><div>1000: 0C 10 10 4C 00 10 // TSB $1010 ; JMP $1000<br /></div></div></div></div></div><br /><div>→ MLBに接続したLEDが薄暗く点灯(高速で点滅)</div><br /><div>・VPB(pin1)-Vss(pin21)間抵抗測定</div><br /><div>NMOS品 6502 0.0Ω</div><div>R65C02 4.3Ω</div><div>フェイク品W65C02S 4.3Ω</div><div>W65C02S ∞Ω</div><br /><div>　本物のW65C02Sの見分け方はpin1-pin21間の導通を確認するとよい。<br /></div><br /><div>　R65C02とW65C02Sはソフト的にはWAI/STP命令を使わないと区別できないことと、VPB-Vss間の抵抗値から手持ちのフェイク品W65C02SはR65C02を元にしたものの可能性がある。<br /></div><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9598322.html">
<title>W65C02Sの謎</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9598322.html</link>
<description>　手持ちのW65C02Sについてだが、VPB(pin1)とMLB(pin5)を観測してみようと思いLEDを付けてみた。VPBは割り込みベクタ参照時にアサートされる。これは周辺デバイスから割り込みがあった時にデバイスごとに飛び先のアドレスをすり替えることができる。MLBはマルチプロセッサの...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-04-10T00:33:38+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　手持ちのW65C02Sについてだが、VPB(pin1)とMLB(pin5)を観測してみようと思いLEDを付けてみた。VPBは割り込みベクタ参照時にアサートされる。これは周辺デバイスから割り込みがあった時にデバイスごとに飛び先のアドレスをすり替えることができる。MLBはマルチプロセッサのためのメモリロック信号でASL,DEC,INC,LSR,ROL,ROR,TRB,TSB命令のメモリアクセスでアサートされる。</div><br /><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/7/1/7132d3ce.jpg" title="IMGP3488" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/7/1/7132d3ce-s.jpg" alt="IMGP3488" class="pict" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　実際に動かしてみるとVPB側は点灯したまま。TSB命令を適当なRAMのアドレスを参照させて無限ループさせてもそちら側のLEDはなにも点灯しない。</div><br /><div>　R65C02に追加されたW65C02Sの命令にWAI,STPがある。WAI命令は実行すると割り込みが発生するまで一時停止する。次のコードで停止すればW65C02Sのはずなのだが、通り過ぎてモニタに戻ってしまう。</div><br /><div>SEI</div><div>WAI</div><div>NOP NOP NOP NOP NOP</div><div>RTS<br /></div><br /><div>追記：<br /></div><div>※unimonではRTSではなくBRK命令でモニタに戻ると教えてもらいました。これはRTSで偶然戻っているようです。<br /></div><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/3/d/3d927750.png" title="WAI" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/3/d/3d927750-s.png" alt="WAI" class="pict" width="480" hspace="5" height="341" border="0"></a><br /></div><br /><div>　これらのW65C02Sは2014年にebay経由で<span  class="css-901oao css-16my406 r-gwet1z r-ad9z0x r-bcqeeo r-qvutc0">gc_marketsというところから5個セットで購入。1つはPET2001で使用中。一番左は動かなかったもの。</span></div><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/8/6/8635a5a2.jpg" title="IMGP3489" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/8/6/8635a5a2-s.jpg" alt="IMGP3489" class="pict" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/3/c/3cacdeb2.jpg" title="IMGP3490" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/3/c/3cacdeb2-s.jpg" alt="IMGP3490" class="pict" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　刻印は以下のとおり。<br /></div><br /><div>W65C02S8P-10 SA1034A // II450HI 0212 MEXICO<br />W65C02S8P-10 SA1034A // II450 77072-4 MEXICO<br />W65C02S8P-10 SA1034A // 11450 A48380-2 MEXICO<br />W65C02S8P-10 SA1034A // なし<br /></div><br /><div>　ということで別のところからW65C02Sを手配中。確認する予定。<br /></div><br /><div>　さてW65C02Sの作例だが<a  href="https://www.l-star.org/" target="_blank">L-Star-Lite</a>のボードを確認してみた。VPBはオープンでバスはプルアップなどしていない。ただし電源は3.3V。<br /></div><br /><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/6/a/6aede0af.png" title="LStar-Lite-MPU" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/6/a/6aede0af-s.png" alt="LStar-Lite-MPU" class="pict" width="480" hspace="5" height="579" border="0"></a><br /><br /></div><br /><div>　他にも<a  href="http://www.westerndesigncenter.com/wdc/AN-002_W65C02S_Replacements.cfm" target="_blank">AN-002: Replecement Notes for Obsolete Versions of 6502 8-bit Microprocessors</a> には各種6502/65C02の違いについてまとめてある。</div><br /><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  href="https://www.amazon.co.jp/dp/B01855HL7Q?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi" target="_blank"><img  src="https://m.media-amazon.com/images/I/51ETQkcJ71L._SL160_.jpg" alt="Programming the 65816: Including the 6502, 65C02, and 65802 (English Edition)" style="margin-right:10px" class="pict" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  href="https://www.amazon.co.jp/dp/B01855HL7Q?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi" target="_blank">Programming the 65816: Including the 6502, 65C02, and 65802 (English Edition)</a></div><div  class="itemSubTxt">Lichty, Ron</div><div  class="itemSubTxt">2015-11-17</div></div><br  style="clear:left" clear="left"><br /></div>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9597946.html">
<title>SBC6800を改造せずに6502を動かす＆unimon_6502の移植</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9597946.html</link>
<description>　今回はすでに動いているSBC6800ボード側に手を入れずに6502を動かす方法です。　回路図の修正は以下。φ2inを基準に動作するよう変更。　実際の改造はCPU用の40P ICソケットとアドレスデコーダの74138を差し替え。　40P ICソケットは丸ピンのものを使用。pin2,3,5,36,38,39...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-04-08T23:40:55+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　今回はすでに動いているSBC6800ボード側に手を入れずに6502を動かす方法です。</div><br /><div>　回路図の修正は以下。φ2inを基準に動作するよう変更。</div><br /><div><a  target="_blank" title="SBC68006502R2" href="https://livedoor.blogimg.jp/hardyboy/imgs/3/6/36ccddd7.png"><img  class="pict" alt="SBC68006502R2" src="https://livedoor.blogimg.jp/hardyboy/imgs/3/6/36ccddd7-s.png" width="480" hspace="5" height="474" border="0"></a><br /></div><br /><div>　実際の改造はCPU用の40P ICソケットとアドレスデコーダの74138を差し替え。</div><br /><div>　40P ICソケットは丸ピンのものを使用。pin2,3,5,36,38,39をカット。</div><div>※W65C02Sはpin1がVssではなくVPBという出力信号なのでpin1もカット。他の6502/65C02はpin21だけをGND接続しても動きます<br /></div><div><a  target="_blank" title="IMGP3481" href="https://livedoor.blogimg.jp/hardyboy/imgs/f/1/f19802d7.jpg"><img  class="pict" alt="IMGP3481" src="https://livedoor.blogimg.jp/hardyboy/imgs/f/1/f19802d7-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>プルアップ抵抗2つをはんだ付け。</div><div>pin2(RDY) -^v^v^- pin8(Vdd)</div><div><div>pin36(BE),pin38(SO) -^v^v^- pin8(Vdd)</div></div><div><a  target="_blank" title="IMGP3482" href="https://livedoor.blogimg.jp/hardyboy/imgs/f/f/ffcadbad.jpg"><img  class="pict" alt="IMGP3482" src="https://livedoor.blogimg.jp/hardyboy/imgs/f/f/ffcadbad-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　もうひとつの40P ICソケットはpin2,3,5,36,38,39をカプトンテープで絶縁。これをSBC6800のCPUソケットに挿し、その上に先程加工したICソケットを挿す。<br /></div><div><a  target="_blank" title="IMGP3484" href="https://livedoor.blogimg.jp/hardyboy/imgs/b/6/b664192b.jpg"><img  class="pict" alt="IMGP3484" src="https://livedoor.blogimg.jp/hardyboy/imgs/b/6/b664192b-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　74138(LS138,HC138)はpin6-pin16をメッキ線でショートしSBC6800上の74138と差し替え。<br /></div><div><a  target="_blank" title="IMGP3483" href="https://livedoor.blogimg.jp/hardyboy/imgs/2/4/24f5fcb8.jpg"><img  class="pict" alt="IMGP3483" src="https://livedoor.blogimg.jp/hardyboy/imgs/2/4/24f5fcb8-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　このような感じに重ねる。<br /></div><div><a  target="_blank" title="IMGP3485" href="https://livedoor.blogimg.jp/hardyboy/imgs/0/2/0291ca6b.jpg"><img  class="pict" alt="IMGP3485" src="https://livedoor.blogimg.jp/hardyboy/imgs/0/2/0291ca6b-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　これでもともと動作しているSBC6800をベースに前回のような苦労をせずに簡単に6502を載せることができた。ループバックテストもOK。</div><br /><br /><div>　さて、色々遊ぶにはモニタが必要。そこで<a  target="_blank" href="https://twitter.com/electrelic">Electreli</a>cさんの<a  target="_blank" href="https://electrelic.com/electrelic/node/1317">Universal Monitor</a>を動かすことにした。</div><br /><div>　svnで最新のunimonを取得。6502用のソースが入っている~/unimon/6502 を作業ディレクトリとする。<a  target="_blank" href="http://john.ccac.rwth-aachen.de:8000/as/">The Macro Assembler AS</a>が必要なのでcurrentをインストールしておく。</div><div>SBC6800はMC6850で通信を行うのでこの定義を追加する。~/unimon/6502/dev/ 以下にdev_6850.asmという名前で動作するコードを記述し、~/unimon/6502/unimon_6502.asm内にデバイスを選択する部分を追加。</div><div>~/unimon/6502/config/ 以下のconfig.incにMC6850用の定義を追加する。config.incはmakeするときには~/unimon/6502/ 以下にコピーして書き換える。今回は開始アドレスROM_Bを$E000に書き換えた。<br /></div><br /><div>　必要なコードとアセンブル後のHEXファイルを以下に置いた。<br /></div><div><a  target="_blank" href="https://gist.github.com/houmei/a531398ec441de1fd5c48116a24552d0">https://gist.github.com/houmei/a531398ec441de1fd5c48116a24552d0</a><br /></div><br /><div>　手持ちのW65C02/R65C02で動作確認。<br /></div><div><a  target="_blank" title="unimon_pre" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/c/ac65b7c4.png"><img  class="pict" alt="unimon_pre" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/c/ac65b7c4-s.png" width="480" hspace="5" height="350" border="0"></a><br /></div><br /><div>　MOS6502で確認。ちゃんとCPU判別をしている。<br /></div><div><a  target="_blank" title="unimon_MOS6502" href="https://livedoor.blogimg.jp/hardyboy/imgs/5/7/57b5462b.png"><img  class="pict" alt="unimon_MOS6502" src="https://livedoor.blogimg.jp/hardyboy/imgs/5/7/57b5462b-s.png" width="480" hspace="5" height="354" border="0"></a><br /><br /></div><div>　これでもっと遊べますね。あらためてSBC6800作者の電脳伝説さんとunimonのElectrelicさんに感謝します。</div><br /><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  target="_blank" href="https://www.amazon.co.jp/dp/4899774729?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi"><img  class="pict" style="margin-right:10px" alt="モトローラ6800伝説" src="https://m.media-amazon.com/images/I/51P0GemBqBL._SL160_.jpg" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/4899774729?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi">モトローラ6800伝説</a></div><div  class="itemSubTxt">鈴木哲哉</div><div  class="itemSubTxt">ラトルズ</div><div  class="itemSubTxt">2017-12-16</div></div><br  style="clear:left" clear="left"><br /></div>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9597269.html">
<title>SBC6800を改造して6502を動かす</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9597269.html</link>
<description> 　6502は6800にバスがよく似ててアドレス/データバスはまったく同じ。ユニバーサル基板で動かそうと思うとバス周りの配線が面倒くさいが電脳伝説さんのSBC6800ルーズキットをベースにすればいけるんではないかと改造を考えた。パターンカットはなし、MPUの差し替え以外は部...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-04-07T01:05:05+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>&nbsp;　6502は6800にバスがよく似ててアドレス/データバスはまったく同じ。ユニバーサル基板で動かそうと思うとバス周りの配線が面倒くさいが電脳伝説さんの<a  target="_blank" href="https://vintagechips.wordpress.com/2017/12/05/sbc6800%E3%83%AB%E3%83%BC%E3%82%BA%E3%82%AD%E3%83%83%E3%83%88/">SBC6800ルーズキット</a>をベースにすればいけるんではないかと改造を考えた。パターンカットはなし、MPUの差し替え以外は部品はまったく同じ、プルアップ抵抗を3つ追加。</div><br /><div>　前回、<a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/9596047.html">6502のクロック調査</a>でクロック周りはこれで観測した。<br /></div><div><a  target="_blank" title="SBC6800mod-6502" href="https://livedoor.blogimg.jp/hardyboy/imgs/6/0/60c808cd.png"><img  class="pict" alt="SBC6800mod-6502" src="https://livedoor.blogimg.jp/hardyboy/imgs/6/0/60c808cd-s.png" width="480" hspace="5" height="340" border="0"></a><br /></div><br /><br /><div>　パターンカットは行わない。×印は無視。オレンジ色はソケットでピンを上げてカプトンテープなどで絶縁。<br /></div><div><a  target="_blank" title="SBC6800mod-6502-board0" href="https://livedoor.blogimg.jp/hardyboy/imgs/3/c/3c26a8a7.png"><img  class="pict" alt="SBC6800mod-6502-board0" src="https://livedoor.blogimg.jp/hardyboy/imgs/3/c/3c26a8a7-s.png" width="480" hspace="5" height="371" border="0"></a><br /><br /></div><div>　ハンダ面はSO(pin38)と74138(pin6)のプルアップ２箇所。<br /></div><div><a  target="_blank" title="SBC6800mod-6502-board1" href="https://livedoor.blogimg.jp/hardyboy/imgs/9/7/97d8fba0.png"><img  class="pict" alt="SBC6800mod-6502-board1" src="https://livedoor.blogimg.jp/hardyboy/imgs/9/7/97d8fba0-s.png" width="480" hspace="5" height="374" border="0"></a><br /><br /></div><div>　工作はこんな感じ。</div><div><a  target="_blank" title="IMGP3466" href="https://livedoor.blogimg.jp/hardyboy/imgs/7/e/7e5b5507.jpg"><img  class="pict" alt="IMGP3466" src="https://livedoor.blogimg.jp/hardyboy/imgs/7/e/7e5b5507-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　クロックジェネレータであるPIC 12F1822とMPUの位置が近すぎるので基板に取り付ける前に配線。<br /></div><div><a  target="_blank" title="IMGP3467" href="https://livedoor.blogimg.jp/hardyboy/imgs/9/c/9ce69f97.jpg"><img  class="pict" alt="IMGP3467" src="https://livedoor.blogimg.jp/hardyboy/imgs/9/c/9ce69f97-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　が、それでも抜けがあった。7400のpin1に追加ではんだ付け。<br /></div><div><a  target="_blank" title="IMGP3473" href="https://livedoor.blogimg.jp/hardyboy/imgs/e/6/e6677f60.jpg"><img  class="pict" alt="IMGP3473" src="https://livedoor.blogimg.jp/hardyboy/imgs/e/6/e6677f60-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　RDY(pin2)のプルアップ<br /></div><div><a  target="_blank" title="IMGP3471" href="https://livedoor.blogimg.jp/hardyboy/imgs/f/4/f4f685e7.jpg"><img  class="pict" alt="IMGP3471" src="https://livedoor.blogimg.jp/hardyboy/imgs/f/4/f4f685e7-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><div>　SO(pin38)と74138(pin6)のプルアップ</div><div><a  target="_blank" title="IMGP3472" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/3/a3e80aea.jpg"><img  class="pict" alt="IMGP3472" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/3/a3e80aea-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　アクロバティックな改造になってしまった。素直にパターンカットをする方向で考えたほうがよかったかもしれない。次回、φ２inベースで改造する予定なのでそのときは考慮する。</div><br /><div><a  target="_blank" title="IMGP3478" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/9/a94e1297.jpg"><img  class="pict" alt="IMGP3478" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/9/a94e1297-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><br /><div>　エコーバックテスト。これは<a  target="_blank" href="https://www.rutles.net/products/detail.php?product_id=794">モトローラ6800伝説</a>のコードをそのまま6502向けに移植したもの。<a  target="_blank" href="http://john.ccac.rwth-aachen.de:8000/as/">The Macroassembler AS</a>を使用した。書いてて思ったのがBRAないのね、とかASRはなくてLSR使うのね、とかビッグエンディアンなのね、など。<br /></div><br /><br /><div>※一箇所、改行$0D,$0Aを$0F,$0Aと間違えた箇所があります。<br /></div><div><a  target="_blank" href="https://gist.github.com/houmei/96c8a6403b2a86a9f6434925dd0c85f6">https://gist.github.com/houmei/96c8a6403b2a86a9f6434925dd0c85f6</a><br /></div><br /><div><a  target="_blank" title="echoback6502" href="https://livedoor.blogimg.jp/hardyboy/imgs/5/d/5d618814.png"><img  class="pict" alt="echoback6502" src="https://livedoor.blogimg.jp/hardyboy/imgs/5/d/5d618814-s.png" width="480" hspace="5" height="246" border="0"></a><br /></div><br /><br /><div>今後の方針：</div><div>・現在R65C02を使って動いているがW65C02Sを使ったら動かなかった。クロックは正常だがA7,A8,データバスが変化しR/Wが'L'でこれはおかしい。Electrelicさんのところでも動かないらしい(<a  target="_blank" href="https://electrelic.com/electrelic/node/1358">W65C02続報</a>)のだが、こちらでは別個体のW65C02がPET2001用ボードで動いている。要調査。</div><div>・φ２outをベースに動作させているが、φ２inベースの改造もやってみる。<br /></div><br /><br /><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  target="_blank" href="https://www.amazon.co.jp/dp/4899774729?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi"><img  class="pict" style="margin-right:10px" alt="モトローラ6800伝説" src="https://m.media-amazon.com/images/I/51P0GemBqBL._SL160_.jpg" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/4899774729?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi">モトローラ6800伝説</a></div><div  class="itemSubTxt">鈴木哲哉</div><div  class="itemSubTxt">ラトルズ</div><div  class="itemSubTxt">2017-12-16</div></div><br  style="clear:left" clear="left"><br /></div>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9596047.html">
<title>6502のクロック調査</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9596047.html</link>
<description>　6502とApple IIシステムROMの秘密を読んでSBC6800をちょっと改造すれば6502で遊べるのでは、と思いついた。クロックジェネレータ役のPICの1MHz出力を6502のφ2inに接続し、φ2outを6800のE信号代わりにすればできそうと思ったがW65C02のデータシートに気になる記述が。PHI1...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-04-03T18:23:19+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　<a  target="_blank" href="https://www.rutles.net/products/detail.php?product_id=846">6502とApple IIシステムROMの秘密</a>を読んでSBC6800をちょっと改造すれば6502で遊べるのでは、と思いついた。クロックジェネレータ役のPICの1MHz出力を6502のφ2inに接続し、φ2outを6800のE信号代わりにすればできそうと思ったがW65C02のデータシートに気になる記述が。</div><blockquote><div>PHI1O and PHI2O clock delay from PHI2 is no longer specified or tested and WDC recommends using an oscillator for
system time base and PHI2 processor input clock.</div></blockquote><div>φ2inとそれから生成するφ1out、φ2outのタイミングは規定せず外部からのφ2を基準にしろと書いてある。ということで手持ちの6502と65C02でφ2inとφ2outの観測を行った。</div><br /><div>　CH1はPICの出力する1MHzで6502の37ピン、φ2in(φ0)に接続。CH2は39ピンのφ2outで受け端のLS00で観測。データシートでは下がりきった所のディレイだが、画像は立ち下がり始めの所の比較。<br /></div><div><a  target="_blank" title="20206502-1" href="https://livedoor.blogimg.jp/hardyboy/imgs/9/9/991902ef.jpg"><img  class="pict" alt="20206502-1" src="https://livedoor.blogimg.jp/hardyboy/imgs/9/9/991902ef-s.jpg" width="480" hspace="5" height="360" border="0"></a></div><br /><div>・W65C02　φ2inとφ2out間の規定なし 約50ns/25ns</div><div><a  target="_blank" title="20206502-2-W65C02" href="https://livedoor.blogimg.jp/hardyboy/imgs/2/0/20bc689d.jpg"><img  class="pict" alt="20206502-2-W65C02" src="https://livedoor.blogimg.jp/hardyboy/imgs/2/0/20bc689d-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /></div><br /><br /><div>・R65C02　φ2in↓からφ2out↓までmax 50ns 実測値約50ns/25ns<br /></div><br /><div><a  target="_blank" title="R65C02-Tdly50ns" href="https://livedoor.blogimg.jp/hardyboy/imgs/3/9/39667e62.jpg"><img  class="pict" alt="R65C02-Tdly50ns" src="https://livedoor.blogimg.jp/hardyboy/imgs/3/9/39667e62-s.jpg" width="480" hspace="5" height="154" border="0"></a><br /><br /></div><br /><div><a  target="_blank" title="20206502-R65C02" href="https://livedoor.blogimg.jp/hardyboy/imgs/a/1/a1ea3559.jpg"><img  class="pict" alt="20206502-R65C02" src="https://livedoor.blogimg.jp/hardyboy/imgs/a/1/a1ea3559-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><br /><div><div>・SY6502　φ2in↓からφ2out↓までmax 65ns 実測値約50ns/50ns</div><div><a  target="_blank" title="SY6502CLK-65ns" href="https://livedoor.blogimg.jp/hardyboy/imgs/f/c/fc28afe5.jpg"><img  class="pict" alt="SY6502CLK-65ns" src="https://livedoor.blogimg.jp/hardyboy/imgs/f/c/fc28afe5-s.jpg" width="480" hspace="5" height="211" border="0"></a><br /><br /></div><div><a  target="_blank" title="20206502-SY6502" href="https://livedoor.blogimg.jp/hardyboy/imgs/f/5/f590458b.jpg"><img  class="pict" alt="20206502-SY6502" src="https://livedoor.blogimg.jp/hardyboy/imgs/f/5/f590458b-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div><br /><div><div>・MOS6502　φ2inとφ2out間の規定なし、バスタイミングはφ2outベースで記述 約50ns/50ns</div><div><a  target="_blank" title="20206502-MOS6502" href="https://livedoor.blogimg.jp/hardyboy/imgs/b/6/b6c61ce0.jpg"><img  class="pict" alt="20206502-MOS6502" src="https://livedoor.blogimg.jp/hardyboy/imgs/b/6/b6c61ce0-s.jpg" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>　1MHz動作でφ2in-φ2out間のディレイはNMOS品で約50ns/50ns、CMOS品で約50ns/25ns。NMOS品は立ち上がりがCMOS品よりもなだらか。<br />　この程度のディレイだと1MHz動作(有効時500ns)ではI/Oやメモリアクセスで300nsかかったとしても充分余裕がある。<br /></div></div></div></div><br /><div>　では実際のパソコンなどではどうか？回路図を探して確認してみる。</div><br /><div>APPLE 1：φ2outを使用していない<br /></div><div><div>APPLE II：φ2outを使用していない<br /></div><div>PET2001(初代)；φ2outはPIA/VIAのみ。バッファ経由で外部引き出し</div><div><div>PET2001N(DRAM版)；φ2outはPIA/VIA/VRAMアクセスのみ</div></div><br /><div>　ということで積極的には使っていない模様。MOS6502でφ2inとφ2outの規定がないにも関わらずφ2inベースで設計されているのはなぜなのか。考えられるのは：</div><div>・φ2out出力が弱く全体を駆動するのにバッファが必要だがそれをするくらいなら原発振から作ったほうがマシ</div><div>・システムクロックがMPUを経由してしまうのでビデオ出力のタイミングなどMPUを外す/故障してしまうと動かなくなる</div><div>あたりだろうか。</div><div><br /><div>　さてSBC6800を改造して6502を搭載する方法だが実験で使ったPICの1MHz出力をφ2inへ、E信号の代わりをφ2outでも動きそうだが改造が非常に面倒だったのでφ2outを使わない方向で再検討する。<br /></div></div></div><br /><br /><div>6502データシート一覧：</div><div><a  target="_blank" href="http://6502.org/documents/datasheets/mos/">http://6502.org/documents/datasheets/mos/</a><br /></div><div><a  target="_blank" href="https://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf">https://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf</a></div><br /><br /><br /><br /><div><div  class="amazon Default"><div  class="pictBox" align="left"><a  target="_blank" href="https://www.amazon.co.jp/dp/4899775008?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi"><img  class="pict" style="margin-right:10px" alt="6502とApple II システムROMの秘密" src="https://m.media-amazon.com/images/I/51bjD3t7YoL._SL160_.jpg" hspace="5" border="0" align="left"></a></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/4899775008?psc=1&amp;tag=lvdrfree-22&amp;th=1&amp;linkCode=osi">6502とApple II システムROMの秘密</a></div><div  class="itemSubTxt">柴田文彦</div><div  class="itemSubTxt">ラトルズ</div><div  class="itemSubTxt">2020-02-25</div></div><br  style="clear:left" clear="left"><br /></div><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9573608.html">
<title>Z8000のエンディアン調査 →ビッグエンディアン</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9573608.html</link>
<description>　Z8000のエンディアンはどうなっているのか気になったので調べてみた。電脳伝説さんのSBCZ8002があるので簡易モニタを利用して確認した。　Z8000のレジスタは以下のとおり。　基本は16bit幅の汎用レジスタR0〜R15で、R0〜R7は8bit幅のRH0〜7、RL0〜7で上位/下位バイトをアク...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2020-02-29T00:38:11+09:00</dc:date>
<dc:subject>マイコン</dc:subject>
<content:encoded><![CDATA[<div>　Z8000のエンディアンはどうなっているのか気になったので調べてみた。電脳伝説さんのSBCZ8002があるので<a  href="https://vintagechips.wordpress.com/2019/04/19/sbcz8002%e3%81%ae%e7%b0%a1%e6%98%93%e3%83%a2%e3%83%8b%e3%82%bf/" target="_blank">簡易モニタ</a>を利用して確認した。</div><br /><div>　Z8000のレジスタは以下のとおり。</div><br /><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/5/9/597b522f.jpg" title="スクリーンショット 2020-02-28 23.59.52" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/5/9/597b522f-s.jpg" alt="スクリーンショット 2020-02-28 23.59.52" class="pict" width="480" hspace="5" height="536" border="0"></a><br /></div><br /><div>　基本は16bit幅の汎用レジスタR0〜R15で、R0〜R7は8bit幅のRH0〜7、RL0〜7で上位/下位バイトをアクセスできる。RR0,2,4,6,8,10,12,14は32bit幅のレジスタで16bit幅のレジスタをペアで使う。RQ0,4,8,12は64bit幅の4レジスタペアでこれは直接メモリアクセスはできず、乗算や除算で使用する。</div><br /><div>　レジスタの指定は4bitで、どの幅のレジスタ(RH/RL,R,RR,RQ)を使うかは命令によって決まる。</div><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/6/2/62a42e53.jpg" title="Z8000regassign" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/6/2/62a42e53-s.jpg" alt="Z8000regassign" class="pict" width="480" hspace="5" height="270" border="0"></a><br /></div><br /><div>　こんな感じで自分の直感とは違っていたのでハンドアセンブルで間違えたのよね。</div><div>　RH0~RH7 → 0~7 / RL0~RL7 → 8~15　でした。</div><br /><div><div>　ではエンディアンの確認方法。メモリ上の8100H番地より4バイトのデータを置き、これを元データとする。</div><div>(1) 4バイトのRR0にロードし、8108H番地からRH1,RL1,RH0,RL0の順に1バイトずつストア。</div><div>(2) 4バイトのRR0にロードし、810CH番地からR1,R0の順に2バイトずつストア。</div><div>(3) 2バイトのR0にロードし、8104H番地からRH0,RL0の順に1バイトずつストア。<br /><blockquote>91F0 PUSHL @R15,RR0<br />91F2 PUSHL @R15,RR2<br />2102 8100 LD R2,#8100<br />2103 8108 LD R3,#8108<br />1420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDL RR0,@R2<br />3231 0000 LDB R3(0),RH1<br />3239 0001 LDB R3(1),RL1<br />3230 0002 LDB R3(2),RH0<br />3238 0003 LDB R3(3),RL0<br />3331 0004&nbsp; LD R3(4),R1<br />3330 0006 LD R3(6),R0<br />2103 8104 LD R3,#8104<br />2F20 LD R0,@R2<br />3230 0000 LDB R3(0),RH0<br />3238 0001 LDB R3(1),RL0<br />95F2 POPL RR2,@15<br />95F0 POPL RR0,@15<br />9E08 RTS<br /></blockquote></div></div><div>　前後でレジスタをスタックに保存してます。実行結果はこのとおり。</div><br /><a  target="_blank" title="Z8000-IXUN" href="https://livedoor.blogimg.jp/hardyboy/imgs/6/3/6331e1fd.png"><img  class="pict" alt="Z8000-IXUN" src="https://livedoor.blogimg.jp/hardyboy/imgs/6/3/6331e1fd-s.png" width="480" hspace="5" height="375" border="0"></a><br /><br /><div>　'UNIX'の文字列をロードしてRR0の上位から1バイトずつストアしたら'IXUN'となった。R0は上位バイトがRH0で下位バイトがRL0なので、16bit幅に関してはビッグエンディアンとなる。</div><br /><div>　ここで残る疑問が。RR0はR1:R0なのだろうかそれともR0:R1なのだろうか？R1:R0ならばPDP-11とも異なるmiddle endianとなり、R0:R1ならば正真正銘のビッグエンディアンとなる。RQ0についても同様。</div><div><strike>仕様書を読んでみてもRR0のペアの順番について明確に書いてあるところが見つかりませんでした！！いかがでしたか！！</strike></div><div>　これについてはレジスタペアを使った演算をやってみて確認する予定。次回につづく。<br /></div><br /><div>追記：レジスタペアについて調査。以下のとおり上位から小さい番号のレジスタ順に並びます。</div><div>32bitレジスタRRのペアは RR0 = R0:R1</div><div>64bitレジスタRQのペアは RQ0 = RR0:RR2 = R0:R1:R2:R3<br /></div><br /><div>以下は確認コード：</div><div><blockquote>93FA PUSH @15,R10<br />91F4 PUSHL @R10,RR4<br />91F6 PUSHL @R10,RR6<br />210A 8100 LD R10,#8100<br />8D48 CLR R4<br />8D58 CLR R5<br />8D68 CLR R6<br />8D78 CLR R7<br />2105 0123 LD R5,#0123<br />1904 4567 MULT RR4,#4567<br />33A4 0000 LD R10(0),R4<br />33A5 0002 LD R10(2),R5<br />33A6 0004 LD R10(4),R6<br />33A7 0006 LD R10(6),R7<br />1406 0123 4567 LDL RR6,#01234567<br />1804 1122 3344 MULTL RQ4,#11223344<br />33A4 0008 LD R10(8),R4<br />33A5 000A LD R10(A),R5<br />33A6 000C LD R10(C),R6<br />33A7 000E LD R10(E),R7<br />95F6 POPL RR6,@R15<br />95F4 POPL RR4,@R15<br />97FA POP R10,@R15<br />9E08 RTS<br /></blockquote>　32bitレジスタペアのRR4について、R4:R5と仮定しR4=0,R5=0x0123を設定、MULT命令で即値0x4567を掛けてRR4に保存。その後8100Hから2バイトずつR4,R5,R6,R7を書き込む。乗算の結果0x004ee415がそのまま見えるので32bitペアの順序は仮定どおり。</div><div>　64bitレジスタペアのRQ4について、RR4:RR6と仮定しRR4=0,RR6=0x01234567を設定、MULTL命令で即値0x11223344を掛けてRQ4に保存。その後8108Hから2バイトずつR4,R5,R6,R7を書き込む。乗算の結果0x00137e8562dff45cがそのまま見えるので64bitペアの順序は仮定どおり。<br /><div>検算はgawk --bignum 'BEGIN{printf "%lx ",0x12345678*0x11223344}' などなど。</div><br /><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/1/7/17654c12.png" title="Z8000-MULT" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/1/7/17654c12-s.png" alt="Z8000-MULT" class="pict" width="480" hspace="5" height="412" border="0"></a><br /><br /></div></div><br /><div>　ということでZ8000のレジスタペアは上位側が小さい番号であり、メモリアクセスはビッグエンディアン。<br /></div><br /><div>　さて、以上のことはソフトウェア側から見た話であり、ハードウェアでメモリのセレクトを見るとアドレスラインのA0=0のときに奇数アドレスとなるのでバイト単位で入れ替わるという話になります。ややこしいですね。<br /></div><div><a  href="https://vintagechips.wordpress.com/2019/04/16/sbcz8002%e3%81%a7helloworld%e3%81%ab%e6%88%90%e5%8a%9f/" target="_blank">SBCZ8002でhello,worldに成功</a>(電脳伝説)<br /></div><blockquote  class="twitter-tweet"><a  href="http://twitter.com/vintagechips" target="_blank"><span  class="avatar"><img  src="http://pbs.twimg.com/profile_images/960437553911312386/Nlk51suI_normal.jpg"></span><span  class="fn">電脳伝説</span><span  class="nickname">@vintagechips</span></a><p>Z8000のエンディアンまとめ。プログラマの皆さんにとってはビッグエンディアンです。下のとおり。ただし、製作担当の立場でいうと、SBCZ8002は偶数バンクと奇数バンクを逆に接続しているので、その状態で普通に並ぶってことはPDPエ… <a  href="https://t.co/mudGeQK9C0" target="_blank">https://t.co/mudGeQK9C0</a></p><a  href="http://twitter.com/vintagechips/status/1233569212448169985" target="_blank">2020/02/29 10:46:33</a></blockquote><br />
<br /><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>]]>
</content:encoded>
</item>

</rdf:RDF>
