Z8試作基板が8年ぶりに完成

ザイログZ8はなかなかの難物で過去に試作基板を3台も製作している。初代は手作りの力作だったが電源が燃えて失敗、感光基板の2代目はプログラムが起動せず、プリント基板の3代目で無事に動作した。何はともあれ動いたのだから動かしかたは理解した。過去の間違いを振り返りながら、この8年ほど放置してあった初代をあらためて完成させた。

初代は2013年の設計で芸風が今とだいぶ違う。電源は今なら5VセンタープラスのACアダプタ直結だけど、これは整流と安定化をやっていて8V以上のACアダプタが全部OK。ただし、消費電流のデカいNMOSのZ8だと三端子レギュレータが燃える。だからCMOSのZ8を使い、燃えた三端子レギュレータを交換して、回路はそのまま。

Z8を外部ROMから起動させるにはP0/A8~P3/A11をプルダウンする必要がある。2代目でプログラムが起動しなかった理由はプルダウンの抵抗値が大きすぎたから。マニュアルに最適値が示されていなくて困ったが、3代目を製作する過程で試行錯誤により6.8kΩと判断。その結果を初代に反映し、取り付けてあった100kΩを6.8kΩに交換した。

修正した初代の回路図を下に示す。端末がつながるようにUSB-シリアル変換アダプタの端子を追加。3代目で74573に変更したアドレスラッチはまだ74374のままでアドレスの確定が微妙に遅れるが読み書きには間に合うから問題がない。あとは3代目と同じ。

修正した初代の回路図(PDF)─sbcz8v5_sch.pdf

この絶対に動くはずの回路でも最初の電源オンでは動作しないというジンクスが健在。配線を見直して間違いをひとつ発見、修正してようやくBASIC/DEBUGが起動した。下の画面はテストプログラムで400以下の素数を全部表示したところ。

久しぶりに手配線をやって独特の味わいに酔っている。といっても大部分は8年前にやったやつで今回はUSB-シリアル変換アダプタの接続と間違いの修正だけ。その数本で達成感が得られて誠に効率がいい。ほかにもやりかけの基板がないか探してみようと思う。

カテゴリー: Z8 | コメントをどうぞ

8752同等品でBASIC-52が動いた

インテルがMCS-51ファミリーのために作ったBASIC-52は組み込み用のCPUでここまでやるかってくらい高機能。ぜひ動かしてみたいと思い、先達の製作例を調べたら、ああそうか、高機能なんだから回路も複雑になるわけだ。でもさ、美味しいところだけ安直にいただきたいよね。てことで、機能の一部を捨てるかわりに回路をぐっと簡略化したのが下に示すMCS8051。うまいこと動いちゃったので、ここに情報をまとめておく。

MCS8051ではBASIC-52をCPUの内蔵ROMに持たせて外部ROMをなくした。その結果、外部ROMはもちろんのことアドレスデコーダやプルアップ抵抗など多くの部品がごっそり不要となった。詳細は下のMCS8051技術資料をご覧いただきたい。引き換えに捨てた機能は、外部ROMからデータを読み込むXFER命令とか、外部EPROMに書き込むPROG命令とか、まあだいたいそのあたりかな。こういうの、いらないでしょ(個人の感想です)。

MCS8051技術資料-PDFを別窓で開く
MCS8051データパック-ZIPをダウンロードする

CPUはEPROMを内蔵した8752ということになるが、今や入手困難だから同等品で代替する。最速はSTC89C52RC/40MHz、時間軸の正確さでは8752/11.0592MHz、なんだけどCPUと水晶振動子をソケットにしておいていろいろ差し替えられたらいいよね。問題は水晶のところのコンデンサ。規定にしたがうと10pF~47pFまで幅がある。ただ実際は何でもokみたい。試作機は33pFで全部の組み合わせが安定動作した。保証はしないけどさ。

BASIC-52は変数名が最大8文字(識別は先頭2文字)、浮動小数点計算ができる、などマイクロソフトBASICに近い。ASCIIART.BASがそのまま動くんじゃないかと思って試したら、機能的にはFOR~NEXTをGOTOで抜けるところがエラーになってしまった。ここと細部の書式を調整して修正終わり。実行したら57秒で完走してびっくりだよ。はせりんさんがまとめているASCIIART(マンデルブロ集合)ベンチマークでトップクラスの速度だもん。

10 FOR Y=-12 TO 12
20 FOR X=-39 TO 39
30 CA=X*0.0458
40 CB=Y*0.08333
50 A=CA
60 B=CB
70 I=0
80 T=A*A-B*B+CA
90 B=2*A*B+CB
100 A=T
110 IF (A*A+B*B)>4 THEN GOTO 150
120 I=I+1:IF I<=15 THEN GOTO 80
130 PRINT " ",
140 GOTO 170
150 IF I>9 THEN I=I+7
160 PRINT CHR(48+I),
170 NEXT X
180 PRINT
190 NEXT Y

とはいえBASIC-52の特徴は速度より各種レジスタの設定や割り込みなどでCPUの働きを細かく制御できること。ポート1を使ったLチカのプログラムを下に示す。この記述で1秒おきにタイマー割り込みが掛かってLEDの点灯/消灯が切り替わる。ただし、その1秒は水晶振動子が11.0592MHzの場合。実例は40MHzだからかなり早い。この点はシステム変数XTALに水晶振動子の周波数を代入することで調整できるようになっている。

10 CLOCK 1
20 PORT1=255
30 TIME=0
40 ONTIME 1,100
50 GOTO 50
100 REM TIMER INTERRUPT
110 PORT1=PORT1.XOR.255
120 ONTIME TIME+1,100
130 RETI

CPUが8752同等品なのにどうして名前がMCS8051かというと取っ掛かりのところで勘違いをして今さら変更できなくなったから。あと1か所シルクの間違いも指摘されているが、やはり内緒にしてそのまま行こうと思う。実用性に影響のないところでひとつふたつミスってるほうがかわいいでしょ。じゃあ恒例のお祭り騒ぎするね。このプリント基板はオレンジピコショップに頒布してもらいます。よろしくお願いします。

カテゴリー: 8051 | コメントをどうぞ

デジットのジャンク基板もう2枚を動かした

大阪・日本橋のデジットで大安売りされていたらしいジャンクのマイコンボード、前回の投稿のあとさらにもう2枚をT.Tomo JE6LVE/JP3AELさんから頂いてしまった。写真のKBC-Z11とTMP68301基板(正式名称不明)。どうもすみません、ありがとうございます。てわけで関東在住であるにもかかわらず工作机周辺がデジットのジャンクだらけになっている。

KBC-Z11のCPUはTMPZ84C011で、Z80とCTCと独自設計のポートをいっぱい持っている。蔵書の『プロセッサ』に解説があって、たちまちLチカのプログラムが完成。しかし、コネクタのピン配置とジャンパの設定を調べる作業に難航。写真を撮ってパターンをなぞるんだけど、何でまたこんなところにべったりとシルク印刷しちゃうかね。

なぁんて愚痴を言っているうちに前回と同様、みかんとひよどりさんが調査結果を公開してくれた。いやボクもそれなりのところまでは調べたんだけど、結局、果報は寝て待て、になっちゃった。プログラムを27256に書き、JP3のH側にジャンパを挿し、組み込みLEDでLチカに成功。シリアルがないCPUだからこれがすべて。はいミッションを完了。

TMP68301基板のCPUは68kと制御信号設定機能とシリアルとパラレルを組み込んだ凄いやつ。自慢じゃないけどボクは68kをまったく知らないから動かすのは無理、そのうちやってみる、なんて言ってたらcomonekoさんがちゃっちゃと動かしてROMのジャンパ設定RAMのジャンパ設定を教えてくれた。両方とも32Kバイトのタイプだとこんな感じ。

こうなったらもう他人の褌で相撲を取るわ。comonekoさんのプログラムをほぼそのままパクり、パラレルでLチカに成功。68kのプログラムを初めて書いた記念にソースをGistへ貼っておく。まだシリアルを動かしていないが、それは昔ながらの格好をしていて現在のパソコンだとつなぎにくいため先送り。てことでさしあたりのミッションを完了。

ことによっては廃棄されていたかもしれない基板で規則正しく点滅するLEDは、ちょっと感動的な光景だね。基板を進呈してくれたT.Tomo JE6LVE/JP3AELさん、KBC-Z11の情報をくれたみかんとひよどりさん、TMP68301基板のLチカでボクのやる気スイッチを押したばかりか最後は褌まで貸してくれたcomonekoさんに改めてお礼申し上げます。

カテゴリー: 68000, Z80 | 2件のコメント

デジットのKBC-Z84015Sを動かした

大阪・日本橋のデジットが移転にともなう閉店セールで大安売りをやっていると知った(6月13日まで)。一般的な部品は通販で買えるがマイコン基板はジャンクの扱いになって実店舗販売のみ。関東在住の身としては指をくわえて見てるだけ、かと思ったら、このブログにたびたびお越しになるDAIさんが進呈してくれた。どうもありがとうございます。

KBC-Z84015SはTMPZ84C015のマイコン基板、KBC-Z84015EMはそのICE対応版。コネクタのピン配置などは同じで、それをみかんとひよどりさんが公開してくれた。ボクはこれらの基板とよく似たKBC-Z84Sをもっていて、取り扱い説明書は多くの説明が共通にあてはまるようだ。両方を突き合わせ、全貌が判明。さあ端末をつないでBASICを動かすぞ。

CPUがTMPZ84C015だと動かしかたはどれもみな似たようなもの。すでに秋月電子通商のAKI-80でBASICが動いており、あとは微妙な差異を埋めるだけ。問題はCTCのタイマモードで通信速度を決めているところ。デジットのマイコン基板はクロックが6.144MHzで、その方法だと半端な通信速度になってしまうから、CTCをカウンタモードで使った。

KBC-Z84015Sで動くBASICのソースとHEX-MBKBC.zip(116Kバイト)

CN1(50ピン)の結線図を下に示す。 KBC-Z84015S/KBC-Z84015EMとも同じ。CLKはCN2(30ピン)の29番ピンから引っ張ってきてここへつなぐ。電源はUSB-シリアル変換アダプタからとっている(バスパワー)が、基板上のコンデンサがすべて放電した状態でつなぐと突入電流に耐えられないことがあるため、別にスイッチ付き電源を用意するほうが無難。

KBC-Z84015S/KBC-Z84015EMには32KバイトのSRAMが取り付けられているが、ソルダバッドの初期設定により8Kバイトのみが有効。ただし、ゴーストの影響でBASICからは32Kバイトに見え、起動時、フリーのサイズを間違って表示する。小さなプログラムはそのまま動かして問題がない。きちんとしたい場合はソルダバッドJ2のAを短絡、Bを開放。

上の画面表示例で起動メッセージに続いて入力しているのはいわゆるLチカ、基板上の2本のLEDを交互に点灯させるプログラム。実行結果を下に示す。ジャンクの扱いとはいえ機能は完璧、見た目もきれい。普通に売っていても魅力的なのに聞くところでは百数十円らしい。いけね、いただきものを値踏みしちゃった。ボクにとってはプライスレスです。

知らない土地の行ったことがないお店で段ボール箱に放り込まれていたジャンクが、こうして手もとで動いているのは、考えてみれば不思議なもんだね。あちこちに散らばる個人の思いや情報をネットが結びつけた結果だと思う。進呈してくれたDAIさんと貴重な資料を公開してくれたみかんとひよどりさんに改めてお礼申し上げます。

カテゴリー: Z80 | 1件のコメント

SBC1802最終版が完成

RCA(インターシル/ルネサス)のCDP1802、通称COSMACはレトロCPUの実物を動かしてみる趣味と相性がいいと思う。ガリレオに乗って木星へ行った実績があり、微妙に偏屈な仕様を備え、速度はともかく低消費電力を目指した点が個性的。すなわち、夢と壁と設計上の目標が揃っている。そりゃあ挑戦するよね。出来上がったのがこちら、SBC1802。

CDP1802はインテルのCPUを基準にすればプログラミングモデルが偏屈だがハードウェアはまあ普通。特に8085とよく似ていてメモリまわりはSBC8085のコピペで完成。32KバイトのROMとRAMをつなぐもっとも簡単な構成だからアドレスデコーダは74HC04の1素子しか使わない。残り5素子がもったいないのでステータス等のインジケータを付けた。

まだ消費電力がどのくらい低いかわからない段階で作った試作機がこちら。バスパワーで動くだろうとは思ったが、ぜんぜんダメだったときに備えてACアダプタがつながる。そしてもしギリギリでダメだったらインジケータを簡略化して消費電力を抑えようという魂胆。この配線は最終版に残してあるが、説明が面倒くさいから隠し機能ってことで。

ソフトウェアはRCA BASIC3。端末との通信速度を自動判別するためクロックは適当でいいやと思ったら一部のUSB-シリアル変換アダプタでうまくいかない。しかたなく1.79MHz指定、RCAの方針どおり速度より低消費電力を重視することになった。ASCIIARTの実行時間は45分48秒。遅い! んだけどクロックを2倍にしたところでやっぱりダンペコ。

はせりんさん集計のASCIIART(マンデルブロ集合)ベンチマーク

ソフトウェアは、狙ったわけではないが、The 1802 Membership Cardで配布しているバイナリのいくつかが使えると判明。yanatakaさんに教えてもらってEPROMにMCSMP20A.binを焼いたらBASIC3を含むモニタを起動することができた。ソフトウェアの勉強不足は認めよう。その分これから先もいろいろな発見があると思う。

SBC1802に関する技術的な資料とソフトウェアを下のリンクで公開する。プリント基板はスイッチサイエンスさんとオレンジピコショップさんで頒布している。

SBC1802技術資料-PDF直リンク
SBC1802データパック-ZIPダウンロード
プリント基板頒布元
スイッチサイエンス-SBC1802ルーズキット
オレンジピコショップ-SBC1802専用プリント基板

前回の投稿で述べたとおり、SBC1802の開発過程ではたくさんのかたにアドバイスをいただいた。まさか、リリースしたあともなおみなさんの力で機能が向上するとは思わなかった。ありがたい限り、といって気付いたのだが、過去の製作物でも多かれ少なかれボクのチョンボをみなさんに救ってもらってるよね、ごめんなさい、全部まとめてありがとう。

カテゴリー: COSMAC | 2件のコメント

実はCOSMACやってます

1970年代のCPUを語って間もなく14年めに突入するこのブログでいまだCOSMACに一言も触れていないのは恥ずかしながらその存在を知らなかったから。知ったのは3年前、世界で最初のCMOSマイクロプロセッサはHD6303だよねってツイッターで言ったらほうめいさんが違うよCOSMACだよと教えてくれた。いまさらわかったような解説をするのもどうかと思うので概要はWikipediaのRCA 1802にお任せする。実物(同等品)はこれね。

COSMACの実践的な情報源は、世界的にはThe 1802 Membership Card、日本ではCOSMAC研究会かな。実物を入手したあと動かしかたで悩んでいたらCOSMAC研究会のかんぱぱさんがCPUボードとプログラムローダーボードをプレゼントしてくださって、とんとん拍子にLチカへ到達。おかげでハードウェアの構造はほぼ理解できた。ソフトウェアは勉強不足だが、よくできたBASICが流通しており、困ったことにぜんぜん困らない。

このブログでは、CPUをひとつモノにしたら、なるべくシンプルな回路に組み直し、プリント基板を頒布するのが恒例となっている。回路を組み直す段階で見落としていた知識を拾えるし、うまく動いたとき関心を寄せてくれたみんなと達成感を共有できたら嬉しい。てことでSBC1802の第1号機はこんな感じ。動くには動いたが、多少の問題があるし、なくていいものがいくつか付いている。それに気づかせてくれたことが第1号機 の成果。

COSMACは最高速を目指すより適度な速度にとどめて消費電力を抑える傾向があり、典型的なクロックは 1.79MHz付近。既成のソフトウェアを流用するためSBC1802はクロックを1.79MHzとしたが、もはやその周波数の水晶振動子が存在しない。解決策はnot logicalさんにいただいた。水晶振動子のまわりに余計な穴をあけておいて、既存のソフトウェアが1.79MHzを要求するときには分周可能な水晶発振器を取り付けられるようにした。

クロック1.79MHzを要求する代表的なソフトウェアRCA BASIC3が第1号機で起動。ただし電源スイッチをオフにした状態でも起動してしまう。全部のICをCMOSとしたときに起きるいつもの現象に対策を講じ忘れたことは、うかつではあったが致命的な問題ではない。SBCV20ほかで経験しており、Electrelicさんのアイデアによりすっきり解決することがわかっている。具体的なことは SBCV20の紆余曲折をご覧いただきたい。

電源スイッチがオフでも起動するくらい負荷が軽いならバスパワーで動く可能性が高い。同じく負荷が軽いSBCV20は、バスパワーだと電源スイッチを入れたとたんUSB-シリアル変換アダプタがリセットしてしまったが、SBC1802のほうは大丈夫だった。以上のとおり、みなさんのお知恵を拝借してSBC1802の第2号機を設計。その姿は、もうだいぶ話が長くなったので、次回の投稿で紹介する。

カテゴリー: COSMAC | 1件のコメント

WRT8755最終版が完成

WRT8755(インテル8755ライター)は過去に動いたと言ったりやっぱりダメだったと言ったり暫定的に完成と言ったりして混乱の極致にあった。それが都合7回目の作り直しでようやく完璧に動いたから最後のほうでやった修正の内容とともにご報告する。はいこちらちゃちゃっと動かす予定が結果として莫大な開発費を食い潰してくれた基板です。

WRT8755を暫定的に完成とすると投稿したあと最初に発覚したのは本質から外れたつまらないミス。PICkit2~4が基板の端につっかえて書き込み端子に挿さらない。どんなミスだろうと役割を果たせない基板は作り直さなければならない。今にして思えば、この時点でもっと丁寧にテストしていたら、さらにもう1回の作り直しを避けられたのだった。

作り直した基板は、だいたいは正しく動くが、これでリリースしていいのかと自問しながらテストすると、やっぱり不安定さが気になる状態。本来なら点滅するはずのLEDがときどき点灯または消灯しっぱなしになり、困ったことに原因を調べようとすると復帰する。だから記憶に頼って確かここらへん触るとヘンになるよなってところをプルアップ。

このあてずっぽうが大当たりで、不安定さが完全に払拭された。あらゆる動作の最中、どこをどう触っても異常をきたさない。とにかく動いているので、動いた理由はあとから考えることにして、すべての資料とソフトウェアを下のリンクで公開する。その後オレンジピコショップさんのご協力が得られ、プリント基板の頒布もできた。

WRT8755技術資料-PDF直リンク(2.87Mバイト)
WRT8755 データパック-ZIPダウンロード(51.9Kバイト)
プリント基板頒布元-WRT8755専用プリント基板

ちょっと言っておこうかな。回路規模の大きなコンピュータはよくバスをプルアップするでしょ。WRT8755は小さいけれど比較的大きな電流を取り扱う昇圧回路とナノワットPICが同居して似たような状況にある感じがしたんだ。あてずっぽうのプルアップは、頭の中にある論理をまだ言語化できていないだけで、でたらめとは違うんだ、知らんけど。

カテゴリー: 8085, 書き込み装置 | 1件のコメント

MCS8085最終版が完成

もうとっくに動いているのにいまだあれこれいじりまわしているMCS8085。DIP40ピンのICが3個、TTLなしで直結し、見た目がとてもきれいなだけに、すみずみのちょっとしたところが気になるんだよね。その工程に、とうとう終止符を打つときがきた。ほらこれ何もかも完璧に完成しちゃった最終版、どうだいカッコいいだろ。

最終版で追加したのは8085のSIDとSODにつながるシリアル端子。SIDとSODは以前から標準コネクタに出ていたんだが、USB-シリアル変換アダプタでパソコンとつなぐにはジャンパー線を引き回さなければならなかった。最終版ではシリアル端子にUSB-シリアル変換アダプタを差し込むだけでいい。とっても便利だよね。

MCS8085の原型はインテルMCS-85ファミリーの標準回路。それは組み込み用で、ポートがいっぱいあるがシリアルがない。従来、シリアル端子がなかったのはそういうわけで、今回、シリアル端子を付けたのはソフトウェアシリアルができたから。ついでに簡易アセンブラ付きモニタも作ったぞ。はいこちらお馴染みのハローワールド。

こうしてようやく思い残すところのないコンピュータが出来上がり、開発を完了することができた。すべての資料とソフトウェアを下のリンクで公開する。また、オレンジピコショップさんのご協力を得てプリント基板を頒布する。

MCS8085技術資料-PDF直リンク(2.87Mバイト)
MCS8085データパック-ZIPダウンロード(51.9Kバイト)
プリント基板頒布元-MCS8085専用プリント基板

MCS8085はRAMの総量が256バイト、そのうち簡易アセンブラ付きモニタが使う分を差し引くと、ユーザーが安全に使える領域は200バイトくらいになる。えっ、それだけ、とか言わないでね。その200バイトのためにプリント基板を4回も作り直し、アセンブリ言語で1168行のプログラムを書いたのだ。これこそアマチュア技術者のロマンではないか。

カテゴリー: 8085 | 5件のコメント

SBCV20のソフト開発

前回の投稿に続きSBCV20のソフトウェアの話。最初にネイティブモードのハローワールドとエコーバックテスト(受信割り込み付き)でハードウェアの動作を確認。次に、エミュレーションモード(CPU判定付き)で同じことをやって8080の機械語の動作を確認。参考までにソースをGistに貼っておく。これで8080の機械語の、いわば入れ物が完成。あとはいまハローワールドとエコーバックテストが書いてあるところにBASICを埋め込むだけ。

sbcv20_hello

8080とV20はROM、RAMの順序が逆なので、8080のBASICは前後を入れ替えてからV20へ持ち込むことになる。その入れ替えがしやすいように、8080のBASICをあらかじめアドレス非依存に書き直しておく。この過程で1バイトのRST命令を3バイトのCALL命令へ置き換えたが、先頭のスカスカな領域が詰まって、全体では1バイト減。これをSBC8080で動作確認。実行速度はASCIIART.BASによるベンチマークテストで変化なし。

SBC8080opt_trim

SBC8080で動いたBASICをSBCV20へ埋め込み可能な形に微修正。すなわち、端末制御はネイティブのサブルーチンを呼び出ように書き換え、8080の側でやっている割り込み処理を削除し、ROMとRAMの開始アドレスを変更。これは過渡的なBASICであり、単体ではテストできないから、失敗できない緊張感でいっぱい。その機械語をテキストに書きだし、SBCV20のBASICのソースに埋め込んでアセンブル。ROMに焼いてテスト。

SBCV20rom

SBCV20のBASICは、基本的にエミュレーションモードで動くが、端末制御でネイティブモードのサブルーチンを呼び出すし、端末からの受信割り込みで勝手にネイティブモードへ戻ってしまう。この往来にあたり、セグメントをどう取り扱うかで何度かやり直しを余儀なくされた。最終的にセグメントは終始0000H固定として起動に成功。V20と8080のコードが同じセグメントに混在するが、むしろアドレスの関係がわかりやすくなった。

sbcv20_basic

SBCV20のBASICでASCIIART.BASが完走。これをもって当面の目標を達成したと判断する。実行時間は2分30秒。下の写真でタイマーが1分56秒を表示しているのは途中経過だから。この結果を、はせりんさんが公開しているASCIIART(マンデルブロ集合)ベンチマークのデータと照合すると、V20/10MHzのエミュレーションモードは8080/10MHzに相当。リアルな8080ではついぞ実現しなかった、未知の領域を体験しているわけだね。

SBCV20asciiart

SBCV20の関連ファイルをGitHubに置いておく。そのうち、MSBAS80V.HEXはSBC8080で動く。V20BASIC.HEXはSBCV20で動く。MSBASV20.LSTはSBCV20に埋め込まれたBASICのリスティングに相当し、たとえば、BASICのUSR関数で機械語を実行する際、内部構造を知るために必要となる。下の例は、USR関数の引数を取得し、1増加させ、戻り値とする処理。引数や戻り値の取り扱いでMSBASV20.LSTが示すアドレスを参照した。

sbcv20arg

SBCV20は、さしあたりスイッチサイエンスさんのマーケットプレイスで頒布するべく準備を進めているところ。あわせてオレンジピコショップさんにも協力を求めている。とはいえ、事務処理が苦手な上に一部の機能のテストができておらず、あれこれやっているうちにとうとう年末を迎えてしまった。恒例のお祭り騒ぎができるのは来年になると思う。まだちょっと早いかもしれないけれど2021年もよろしくお願い致します。

[2021年3月11日追記]
SBCV20は次の販売店で頒布しています。
スイッチサイエンス-SBCV20ルーズキット
オレンジピコショップ-SBCV20専用プリント基板

カテゴリー: 8088/V20 | 1件のコメント

SBCV20の紆余曲折

日本電気V20(μPD70108)の平凡なコンピュータSBCV20は、このたびエミュレーションモードで8080のBASICが動き、めでたく当面の目標を達成した。ネイティブモードではハローワールドしか動いていないし、インテル8088はまだテスト中だが、先行きの見通しは立った。さしあたり、ここに至る紆余曲折をまとめておきたい。現時点の模範製作例を下に示す。シルクのREV04が試作4回めのプリント基板であることを示している。

別窓でPDFの回路図を開く

V20はじめましたで自信満々に「正しく動く」と予言したREV01はROMとRAMが逆順に配置されているという致命的な欠陥があった。8080の機械語を動かす目標に気をとられ、つい8080と同様、アドレスの前半にROM、後半にRAMを配置してしまった。V20は前半がRAM、後半がROMでなければならない。これを手配線で修正し、ハローワールドに成功。ついでにArduino方式の自動リセットを試して失敗しているが、そこはご愛敬。

sbcv20_cs

さらにテストを進めるとICが全部CMOSのとき電源オフでも走り出す現象が発覚。わかりづらいと思うが、下の写真はACアダプタをつないでいないのにLEDが薄く点灯している。この問題は、忘れていたけれど、SBC6303とSBCZ80で経験済み。シリアルの受信信号が電源に回り込んでいるらしく、これらはRxDに抵抗を入れることで解決した。SBCV20はRxDの周辺にお誂え向きのスペースがあり、抵抗の1本くらいは簡単に追加できる。

SVCV20_power

REV02は、ROMとRAMの配置を修正し、RxDに抵抗を入れ、あともうひとつ、そんなに負荷が軽いのならUSBのバスパワーでも動くだろうと考えて電源選択用のピンヘッダを立てた。このいきあたりばったりで追加した試みが大失敗。バスパワーを選択すると、電源をオンにした瞬間、USB-シリアルアダプタがリセットしてしまう。数秒後に復帰するが、パソコンの端末ソフトが回線を見失って再起動を余儀なくされ、不便きわまりない。

SVCV20_buspower

陶芸家は窯焼きに失敗した作品をその場で割っちゃうでしょ。まあそんな気持ち。電源選択用のピンヘッダは、パスパワーで動かそうとして失敗した証拠であり、一刻も早く取り去りたい。てことで、ほかの部分を十分にテストしないままREV03を製作。案の定、問題が発覚。シリアルの受信信号が電源に回り込む件、RxDに抵抗を入れただけでは解決していない。下の写真はACアダプタをつないでいないのにLEDが煌々と点灯している。

SVCV20_rev3

ここまでひどい事態は経験がない。もしかしたらRxDの受信信号だけでなくRTSの制御信号も流入している恐れがある。どうしたものかと考えあぐねていたら、ありがたいことにネットで知り合った同好の士からいくつかの対策が寄せられた。そのうちElectrelicさんのアイデアを拝借。RxDの抵抗をダイオードに替え、根元をプルアップ。またCTSを端子から切り離し、GNDへ接続。これで一件落着。最終形のREV04は冒頭で紹介したとおり。

いやもう苦労話を始めたら言いたいことがたくさんあって終わらない。このあとソフトウェアの開発でもいろいろあるわけだが、それは次回の投稿に送ろうと思う。

カテゴリー: 8088/V20 | 3件のコメント