<?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>まごころせいじつ堂 - Z8000</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/9573608.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9391724.html" />
 </rdf:Seq>
</items>
</channel>

<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>Z8000</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>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9391724.html">
<title>SBCZ8002組み立てと/MO端子によるLチカ</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9391724.html</link>
<description>　電脳伝説さんのSBCZ8002を組み立てましたよ＆Lチカ報告。SBCZ8002_reference(電脳伝説)　GAL16V8AはTL866CSライターで書き込み。ライターのゼロプレッシャーソケットで接触不良があって書き込めなかったことがあったがそれ以外はトラブルなし。24Pのスリムな300milのソケッ...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2019-06-06T02:56:44+09:00</dc:date>
<dc:subject>Z8000</dc:subject>
<content:encoded><![CDATA[<div>　電脳伝説さんのSBCZ8002を組み立てましたよ＆Lチカ報告。</div><br /><div><a  target="_blank" href="https://vintagechips.wordpress.com/2019/05/07/sbcz8002_reference/">SBCZ8002_reference</a>(電脳伝説)</div><br /><div>　GAL16V8AはTL866CSライターで書き込み。ライターのゼロプレッシャーソケットで接触不良があって書き込めなかったことがあったがそれ以外はトラブルなし。24Pのスリムな300milのソケットは持ってなかったので16P+8Pのソケットを組み合わせて使用。丸ピンソケットの場合は28ピンのものをカットしてもよいそうです。<br /></div><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/2/d/2d408eac.jpg" title="2019SBCZ8002-a" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/2/d/2d408eac-s.jpg" alt="2019SBCZ8002-a" class="pict" width="480" hspace="5" height="360" border="0"></a><br /><br /></div><div>&nbsp;　さて、ある思いつきがあってこのボードだけでLチカできんかなあ、SCC Z8530のシリアル周りの空き出力でできんだろうか(2chのうち1ch未使用)とつぶやいたらZ8002には/MO端子があるよと教えてもらった。Z8000の/MI入力と/MO出力は8085のSID/SODに似ていて1bitの入出力ができる。ただシリアル入出力の用途ではなく複数プロセッサでのリソースの共有などで使われるらしい。しかも特権命令のMSET/MRESで簡単にオンオフできる。SCCの制御は面倒そうだったのでこれはすぐできそう。<br /></div><br /><div>　で、/MO端子に4.7kΩでLEDをはんだ付け。アクティブローなのでカソードを接続。<br /></div><div><a  href="https://livedoor.blogimg.jp/hardyboy/imgs/e/8/e8142574.jpg" title="2019SBCZ8002-b" target="_blank"><img  src="https://livedoor.blogimg.jp/hardyboy/imgs/e/8/e8142574-s.jpg" alt="2019SBCZ8002-b" class="pict" width="480" hspace="5" height="360" border="0"></a><br /><br /></div>

<div><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">SBCZ8002の簡易モニタ</a>を使ってテスト。<br /></div><br /><div>8000: 7B08 MSET<br /></div><div>8002: 9E08 RET<br /></div><br /><div>/MO端子はリセット直後はdisable。</div><div>8000H番地をCALLするとLEDが点灯。<br /></div><br /><div><div>8010: 7B09 MRES<br /></div><div>8012: 9E08 RET<br /></div><br /><div><div>8010H番地をCALLするとLEDが消灯。リセットをかけても消灯。<br /></div><br /></div><br /></div><div><blockquote  class="twitter-tweet"><a  target="_blank" href="http://twitter.com/houmei"><span  class="avatar"><img  src="http://pbs.twimg.com/profile_images/1112623837617635328/LjXlJFeB_normal.jpg"></span><span  class="fn">ほうめい　まごころせいじつ堂</span><span  class="nickname">@houmei</span></a><p>SBCZ8002によるZ8002の/MO出力Lチカ<br />MSET 7B08<br />RET 9E08<br />でOK バッチグー<br />リセット時は/MOは'H' なのでリセットボタンを押すと消える <a  target="_blank" href="https://t.co/nah2WznCMo">https://t.co/nah2WznCMo</a></p><a  target="_blank" href="http://twitter.com/houmei/status/1135911019941732356">2019/06/04 23:07:46</a></blockquote><br />
<br /></div>
<br />
<br />
<a  target="_blank" href="https://www.amazon.co.jp/dp/B0026ZOJX6?tag=keisanki-22">東芝 47V型 液晶 テレビ 47Z8000 フルハイビジョン   2009年モデル</a><br  clear="all">
<table  border="0">
<tbody><tr  align="left">
<td>
<a  target="_blank" href="https://www.amazon.co.jp/dp/B0026ZOJX6?tag=keisanki-22"><img  alt="B0026ZOJX6" aligh="left" src="https://images-fe.ssl-images-amazon.com/images/I/313SfWTcztL._SL200_.jpg" border="0"></a>
</td>
<td  align="left">
2009-05-09<br />
<img  title="5つ星のうち2.8" alt="5つ星のうち2.8" src="https://images-fe.ssl-images-amazon.com/images/G/09/x-locale/common/customer-reviews/ratings/stars-3-0.gif" width="55" height="12" border="0"><br />
￥ 64,400 (中古品)<br />
</td></tr></tbody></table>
<br /><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>]]>
</content:encoded>
</item>

</rdf:RDF>
