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 | 1件のコメント

実は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件のコメント

SBCF8が完成

F8(3850/3853)で動くシンプルボードコンピュータSBCF8は最大の難関だったタイニーBASICの移植に成功し、このたびようやく完成にこぎつけた。SBCF8の大きな特徴は下に示すとおりSBC8080サブボードと接続してそのメモリと8251を利用するところ。特にF8を8251と組み合わせて端末制御する仕組みは世界で最初に実現した快挙、だと思う。

F8system

SBCF8の成果を第三者に検証していただけるよう、技術的な資料を下に公開する。最後まで苦しめられたタイニーBASICはデータパックに含まれる。そのソースは一見ダセぇ書きかたをしており、もうちょっとどうにかならないかと言われることが予想されるため、アセンブラを一緒に入れておいた。やれるもんならやってください。

回路図-sbcf8sch.pdf
部品表-sbcf8bom.pdf
データパック-sbcf8_datapack.zip(2.44Mバイト)

このブログではコンピュータがひとつ完成するたびにプリント基板を頒布してお祭り騒ぎをするのが恒例になっている。ところがSBCF8は、F8が入手困難すぎて、今のところプリント基板を頒布できる状況にない。いつもはドヤ顔でお披露目するのに、今回は心なしか勢いを欠いているなと感じたら、まあそのあたりが原因だと思ってもらいたい。ぴえん。

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

手ごわいぞF8

SBCF8は固有の装置が端末だけなので、普通、端末制御サブルーチンを書けばプログラムの移植が完了する。なのにいまだタイニーBASICを動かせないのはボクがとろいからではなく、いやまあそういう側面はあるにしろ、大きな理由はF8が普通でないからだ。ボクが書いた端末制御サブルーチンは、hello, worldを成功させたものの、タイニーBASICで使えるかどうか判断しきれていない。そのへんの事情を理路整然と説明してみる。

1.SBC8080サブボードの8251を流用するという妙案が仇となる
SBCF8はSBC8080サブボードと組み合わせてそのメモリと8251を拝借する。メモリは問題ない。8251は、8080だとIOアドレスに割り当てるが、F8のIOアドレスは内蔵IO専用だから、SBCF8ではメモリアドレスに割り当てた。これが問題の芽となる。でもさ、SBC8080サブボードと組み合わせるのは経済的に合理的で、悪くない構成だと思うんだよね。

2.F8ではメモリアドレスを必ずDCで指定する
F8ではメモリアドレスをDCで指定する。8251のレジスタもDCによる間接指定となる。DCは随所で使われるため、端末制御サブルーチンはこれを保護しなければならない。じゃあどうやるか。ちなみに、タイニーBASICのもとの記述は端末をポート0で制御しており、DCを使わないため、DCの保護をやらない。つまり、そのままパクれる例がない。

3.F8にはスタックがないんだぜ
想定外だったのはF8にスタックがないこと。かわりに、サブルーチンの呼び出し時に戻りアドレスを持つPC1と、DCの裏レジスタともいうべきDC1がある。これらはスタックでなく上書きだから、サブルーチンのネストが1回に限られ、それ以上のやりかたは「各自工夫」となる。プログラムの移植にあたっては、その流儀と合わせる必要がある。

4.SBCF8のhello, worldで使った端末制御サブルーチン
SBCF8の端末制御サブルーチンはhello, worldが動けばいいという前提で簡単にまとめてある。一例として1文字出力を下に示す。ここからもうひとつサブルーチンを呼び出すことはないのでPC1を保護していない。DCはDC1と入れ替えて保護した。どこか別のところでもDC1を使っていたら問題になりかねないが、hello, worldでは大丈夫だと確認した。

;	Scratchpad01の文字を8251で送信
;
PUTCH XDC ;DCをDC1と入れ替える(退避)
PU1 DCI UARTC ;DCに8251制御レジスタのアドレスを入れる
LM ステータスをAに読む
NI $01 ;Aの送信可ビット以外をマスク
BZ PU1 ;送信可でなければ繰り返す
DCI UARTD ;DCに8251データレジスタのアドレスを入れる
LR A,1 ;Scratchpad01の文字をAに読む
ST ;Aの文字を書く
XDC ;DCをDC1と入れ替える(復帰)
POP ;RETURN

ついでだから言っておくとDCの値はメモリアドレスを指定したあと自動的に1増加する。そのため、8251のレジスタを繰り返し読むときは、随時、DCにアドレスを入れる必要がある。もうひとついうとDCは3853(SMI)にあり、3850(CPU)のレジスタ構成図をいくら探しても見付からない。それやこれや意表を突いた仕様に悩まされているが、こまごまと説明すると愚痴っぽくなるので、そのへんはまた別の機会に述べようと思う。

5.サブルーチンのネストはこうやった
SBCF8の端末制御サブルーチンのうち文字列出力を下に示す。文字列出力は1文字出力を繰り返し呼び出す。1文字出力がPC1を上書きし、文字列出力が戻れなくなってしまう事態を避けるため、先頭でPC1をKに退避し、末尾で復帰させる。これで1回のネストが実現する。hello, worldでは、それ以上のネストがないことを確認してある。

;    DCで文字列の先頭を指し示して8251で送信
;
PUTS	LR	K,P	;PC1(戻りアドレス)をKに保存
PS1	LM		;DCの指し示す文字をAに読む
	CI	0	;Aの文字が末尾(0)かどうかを検査
	BZ	PS2	;もし末尾だったら処理を終了
	LR	1,A	;Aの文字をScratchpad01に入れる
 	PI	PUTCH	;PUTCHを呼び出す
	JMP	PS1	;繰り返す
PS2	PK		;Kにある戻りアドレスを復帰

以上のとおり、ボクが書いた端末制御サブルーチンはhello, worldのように小さくて見とおしのいいプログラムだと完璧に機能するが、タイニーBASICではわからない。少なくとも丸ごと流用はできそうにない。というわけで今タイニーBASICの構造を調べているところ。F8の面白さを存分に味わっているが、電子工作の神様、もうお腹いっぱいです。

カテゴリー: F8, TinyBASIC | コメントをどうぞ

F8でLチカとhello, worldに成功

F8開発ボードとSBC8080サブボードの組み合わせでLチカとhello, worldに成功した。これでF8の基本を理解できたといえる。ただし、製作の過程でいくつかの小さな間違いを修正している。そのへんを述べた上で、本番のボードSBCF8を披露したい。情報不足で行き詰っていたとき貴重な資料を提供してくださったtendai22plusさんに感謝します。

f8dev1

F8開発ボードで最大の冒険はSBC8080サブボードとつないでメモリと8251を流用するところ。すなわち、風変わりなF8の構造で普通のメモリと8251を動かせるかっていうこと。信号の遣り繰りは、たぶん試行錯誤が必要だと思ったのでGALに押し込んだ。F8開発ボードにSBC8080サブボードを乗せちゃうと見えないんだけど、ここね。

F8dev5gal

最初のテストはLチカをやるのが普通だが、当初はサブルーチンの呼び出しかたがわからず、点滅の間隔をとるために遅延を入れることができなかった。しかたなく遅延なしでポート1を振ってオシロで観測。うん、まあ振れてはいる。しかし振れ幅が2V強と小さい。このくらいだと、ただの雑音を拾っている可能性が捨てきれない。

f8dev2

試しにポート0を振ってみると、こちらは正しく5V付近の振れ幅が観測できた。その後、ポート1の振れ幅が小さいのは先にTD62003(ダーリントンアレイ)がつながっているせいだと判明。ICソケットからTD62003を取り外したらポート1も正常な振れ幅になった。本番では、TD62003とLED点灯回路をごっそり取り除くことにする。

f8dev3

ポートを振るだけのつまらない処理ではあってもプログラムが動いたからにはメモリの読み出しに成功している。おそらく書き込みも成功するだろう。その自信を背景にマニュアルを読み込み、サブルーチンの呼び出しかたを習得してLチカに成功。難しくて当然だ、F8にはスタックがないんだから(なのにスタックレジスタがあるんだぜ)。

続いてhello, worldね。こちらは8251を使う。SBC8080サブボードの8251は、8080だとIOアドレスにつながるが、F8にはそういう領域がないからメモリと同じアドレスに割り当てる。F8のアドレスをGALで遣り繰りし、$FF00以降をIO領域とした。凡ミスを修正して、ピンの割り当てはこんな感じ。凡ミスの内容は言う価値がないから言わない。

f8dev6gal

F8はリセット信号を出力しないので8251はポート1-7でリセットする。こういう仕組みに組み立てたことをすっかり忘れていたし、気付いたあともF8のポートが反転(0を書くと1を出力)することを知らなくて、ロジアナを持ち出す大騒動になった。回路は目論見どおりに動いている。忘れたり勘違いしたりするくらいは大した問題じゃない。

f8dev4

こうしてhello, worldの出力とエコーバックに成功。ソースをGistに貼っておく。最終的にはこちらで公開されているTiny BASIC for The F8を動かす予定。このBASICはポート0で端末を制御するが、うちのF8はメモリと同じアドレス領域の8251で制御するため、余計なレジスタを使い、メモリの操作を妨害する恐れがある。もう一波乱あるだろうな。

f8dev7

F8開発ボードはSBC8080サブボードより基板の奥行を広げ、そこへTD62003とLED点灯回路、電源とリセットのスイッチを配置している。前述のとおりTD62003とLED点灯回路は取り除くことにしたし、電源とリセットのスイッチは、この位置だと操作し辛い。奥行を広げた意味がないので、サイズを合わせることにした。

f8dev7

SBCF8はこんな感じ。SBC8080サブボードを下にして重ねると見た感じスッキリまとまると思う。まだBASICと格闘中だが、hello, worldが動いたからあとはソフトウェアでどうにかなると踏んで、もうプリント基板を注文してしまった。動作確認ができ次第、ハードウェアとソフトウェアの一式、情報を公開しようと思う。

f8dev8

いま(2020年11月7日)ちょっとaitendoを覗いてみたら、F8のうち3850は売り切れて3853が残っている。想像では、コレクターがCPUだけ買ってSMIを放置しているのだと思う。この際いっとくけどさ、F8は3850と3853のセットで一人前のCPUだからね。コレクションだとしても、3850だけではあまり価値がないよ。

カテゴリー: F8 | 3件のコメント

V20はじめました

話せば長いあれこれをごっそり省略して言うと日本電気のμPD70108いわゆるV20で平凡なコンピュータを作ることにした。オレンジピコショップでV20と、勇み足で本来は不要な128KバイトのSRAMを調達。これで8080のエミュレーションをやってGrant’s BASICを動かすのが当面の目標。先々はZ80onSTM32レトロシールドみたいに周辺部品をマイコンボードで代替するのが目標だが、それは話すと長いから省略したあれこれに含まれる。

V20andSRAM

V20の動かしかたは8088と同じ。厳密にはクロックの使いかたが違うが、V20は8088のクロックで動くし、専用のクロックもピン互換のクロックジェネレータで作ることができる。したがって設計は以前tomi9さんに作ってもらったSBC8088を流用。動作確認用のhello, worldもそのまま使えると思う。上位互換のCPUとはこんなに楽なものかと実感。

sbc8088_fix

回路図を下に示す。メモリは最大1Mバイトまで乗るが64Kバイトにとどめてある。読み書き信号は3ステートで出せるように74257で作った上で普通に出している。この微妙な構造は先々マイコンボードと組み合わせる段階でちょっとした妙案を試す準備だが、マイコンボードと組み合わせないときでもこれといって悪さをするわけではないから問題ない。

sbcv20_sch
別窓でPDFの回路図を開く
[2020/12/27追記]この回路図には誤りがあります。最終形はSBCV20の紆余曲折に示しています。

ガーバーはこんな感じ。ボクの製作物はケースを省略してプリント基板むき出しで動かす前提なので、いや本当は配線萌えしちゃうタチだから、パターンが少数のビアできれいに流れると嬉しくなる。これは奇跡の部品配置。あくまで個人の感想だけどね。そして、非論理的なことを言ってよければ、こういうふうに仕上がったときはたいてい正しく動く。

SBCV20

そんなわけでまだF8が動いていない段階でV20を始めてしまった。ほかにCOSMACと8749とZ180と68008をやりたいと思っている。一時期、ぶっ散らかった製作物をひとつずつ片付けていこうとしたことがあったけど無理だったから諦めた。行き当たりばったりでいいや、今までそういうやりかたを続けてきて、結局、何とかなっているんだから。

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