CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

NSC800

設定ファイル修正

統合環境cmpldrvに読込ませる設定ファイルの記述の仕方を修正しました。テキストで書けない制御文字で「\0」は「#」、「\x0d」は「!」と書くことにして読込みの時に元のコードに一括変換してしまうことにします。 このルールでたとえばNSC800用のファイルは…

設定ファイル

統合環境の中でターゲットCPUごとに異なる作業フォルダ、処理系・モニタの仕様の違いなどをまとめたDEVICE構造体を定義しました これにCPUごとに編集可能なテキストで記述した設定ファイルを読み込むようにします。元プログラムでコードに埋め込まれていた設…

統合環境に組み込み

このNSC800ボードもアプリ開発の方法が固まったので統合環境cmpldrvに組み込んでみました。 毎度やっていることは単純でコマンドラインで叩くバッチファイルを呼び出しているだけで前後に一時作業ファイルへのコピー、書き戻し、結果ファイルの表示を追加し…

RTC読取り修正

RTCのレジスタから時刻情報を読み出し文字列に変換する処理を自前で用意しました。カウンタ値自体がBCDコードなので1桁ずつASCIIコードに変換して文字列に埋め込むだけです。厳密にはステータスレジスタをチェックして読取り中のロールオーバ(桁上げ)がな…

RTCドライバ

リアルタイムクロックIC:MM58167Bから時刻を読み出す関数dsptime()を作りました。ついでに1文字出力putc()、文字列出力ルーチンputstr()もCで書いておきます。 時刻表示をする文字列変換にSDCCの標準ライブラリに含まれるprintf系関数を使って簡単に済ませて…

RTC実装

このNSC800ボードで最後まで残っていたリアルタイムクロック:MM58167を実装しました。主要ICはナショセミで統一されています。 前回、ADC0817を実装した時点でこのボードは5Vのみでの動作となってしまってますがそれはしかたありません リアルタイムクロッ…

ADC実装

NSC800ボードに8ビット16チャンネルA/DコンバータADC0817を実装しました。ファミリではありませんがCPUバスに直結できます。 NSC800はZ80とソフトウェアコンパチなのでCコンパイラSDCCがそのまま使えます。例えばこんなバッチでSRAM領域にロードするプログラ…

低電圧動作

これまでに取り付けたデバイスですがそれぞれの動作可能電圧範囲は NSC800/810A/831/858 2.4V~6.0V EEPROM HN58V65A 2.7V~5.5V SRAM LC3564 2.7V~5.5V レベルコンバータADM3202 3.0V~5.5V グルーロジック74HCシリーズ 2.0V~6.0V ということでボードへの…

EEPROM書込み(2)

現状では書込みサイクルが約18msのため64kbitROM全面書き換えには18ms×8192で約2分30秒かかります。これでも待てる時間ではありますがやはりBUSY状態をポーリングして書込み処理を高速化してみます。 データシートを見ると/BUSYピンの状態を見る以外にも ①デ…

EEPROM書込み

NS揃いにはなりませんが、ROMを準備していたEEPROM:HN58V65Aに換装して動作確認してみます。 EEPROMならばボード上で電気的消去、書込みはできますが一番最初は別のシステムで書込みをしておかなければならないので自作のROMライタにデバイス追加しました。…

パラレルポート増設

結線修正でおそらくNSC810Aが動くと思うので、ついでにもう一つのペリフェラルIC:NSC831も挿入しました。これであとROMもナショセミ製のNM27C256Qにすればすべて白帯デザインで統一できます。 よくみると最後に挿入したNSC831がちょっと新しくてこれだけメ…

大手術

NSC810Aの7ピンに/IORQが接続されてしまっているので、まずこれを切断しなければなりません。 裏側からパタン図で見ると赤いライン(基板の表側)でビアを通して7ピンに入ってます。そこに至るまで/IORQは別のペリフェラルにも供給されるので温存したいとこ…

パラレルI/O実装

モニタが載れば後のハードデバッグ作業は格段に楽になります。続いてNSC800ファミリのRAM/IO/TIMER複合ペリフェラルIC:NSC810Aを取り付けました。 このデバイスのチップセレクトはアドレス0xC000-0xFFFFでアクティブになるようにしています。アドレスの下位…

モニタ起動

外部メモリとして64kbitのSRAM LC3564を取りつけました。今は無きSANYO製ですがこのボードが3V/5Vの両電圧で動くことの検証のため低電圧対応のデバイスを選びました。 1MbitSRAMの32ピンフットプリントに右詰で実装するようにしましたがこの両用設計はうまく…

シリアルコントローラ

CPU周りが動いたのでいつもの手順でシリアルコントローラのデバッグをやっておきます。NSC800ファミリのNSC858でマルチプレクスバスがそのままつながります モデム制御信号/DSR,/CTS,/DCDは汎用入力として使いDIPスイッチを接続しておきました。 NSC858の内…

I/Oアドレスデコード

Z80はI/Oアクセスの時、アドレスバス上位8ビットにはBレジスタの内容が出力されている・・というのは内部構成による副作用で仕様に明記されていない動作なのかと思っていましたがZilogのZ80マニュアルを改めて読んでみると、ちゃんと書いてありました つまり…

I/Oアドレス

配線の追加でたぶんROMのアクセスができるようになったので最小ループのプログラムを動かしてみます。 ただし今回はすでに74HC574でラッチするパラレルLEDも実装済みなのでついでにLEDチカチカも入れてみようと思います。 ということでLEDをラッチするI/Oア…

パタン接続ミス

ROMソケットに適当な内容のROMを挿入し、メモリアクセスが行われているかの確認をしてみました。 ROMはこれから何度も抜き差しされるのでZIFソケットを下駄にしています。 ROMの/CEは連続してアクティブになりROMが読み出されているはずなのですが何故かCPU…

ROMタイプ選択

CPUの隣にROM用28ピンソケットも取り付けました。 このボードではいろいろなメモリサイズ、パッケージタイプを選べるようにしたのですが、この時点でROMソケットの真下にあるTTSOPタイプのRAMは使わないことになります。 ROMソケットの下にあるジャンパポス…

CPU実装

CPU:NSC800のみソケットに挿して電源を入れてしまいました。 内部水晶発振回路が動作してCLKOUT(9ピン):ch1に約2.08MHz、ALE(30ピン):ch2に約1MHzのパルスが観測されているのでCPUは動作しているようです 水晶原振の1/2が出力されるCLKOUTに2.08MHzが現…

CE逆接

どこをミスったかと云うとQ1(2SC2712)のフットプリントのピンアサインが間違ってました。コレクタとエミッタがテレコになっちゃってます。これ何で間違えるのかというとKiCADはシンボルとフットプリントが膠着的でなく自由な組合せが可能です。いくつもあ…

リセット回路

このNSC800ボードのリセット回路は以下のようになっています。 押しボタンスイッチにCR時定数をかました簡易的な回路ですが、スイッチとパラにつながったトランジスタQ1を追加してホストからリモートでもリセットがかけられるようにしています。 この部分の…

部品実装中

手持ちの表面実装部品から取り付けていますが、例外的にCPU周りは先に動くことを確認しておきたいのでソケット、クロック・リセット周りは済ませてしまいました。 裏側はこんな具合。チップCRとSOPのロジックが少しあるだけです

組み立て開始

基板が出来上がってからずっと放置していたNSC800ボードをやっと組み立て始めました。先ずは0.1uFのチップコンデンサを24個付けたところです。 24個のうち4個はRS232C用のチャージポンプ、残り20個は電源パスコンとしてパラ接続し基板じゅうにバラまいてあり…

基板到着

荷物の追跡ができないな~などと云ってるそばから先にブツが届いてしまいました。左がMC14500ボード、右がNSC800ボードです。 今回の工程です。発注5/15から製造完了5/22までが1週間でこれはだいたいいつも通りです。 発送方法は送料が一番安かったjapan di…

パタン見直し

NSC800ボードは部品数が多いのでパタン引き回しはオートルータ一発で完了させてしまいましたがパタンの細部を見ると気になるところもあり、外出自粛で時間もあるのでコツコツと手直ししていました。前にも書いていましたがいつもだいたいこんなところを見て…

メモリオプション

ROM/RAM周りはいろいろなデバイス、構成が選択できるようにしてみました。 左端の600mil幅28ピンソケットはROM用でUVEPROM64kbit~256kbitまたはEEPROMHN58V65かHN58V256が挿入できます。ROMソケットの下にあるTSSOPはHM628128専用、中央の300mil幅28ピンソ…

パタン修正

NSC800ボードの方もパタン設計を進めていて最終的な仕上げをしていました。表面実装ICのフットプリントは毎回何かやらかすので 念を入れて再確認します。 SOPの14ピンから20ピン は幅が足りず失敗したことがあるの広めのフットプリントを選択したのですが今…

部品配置

NSC800ファミリだけで構成すればマルチプレックスバスを直結、アドレスデコードさえ不要のはずですが、汎用のROM/RAM、I/Oもつなげることを想定しグルーロジックで各種信号を生成します。最低限必要なのはアドレスラッチ、アドレスデコーダ、バス制御信号と…

手動引き回し

ということでメモリ周りのパタンはこのようになりました ROM用にDIP28ピン-600mil幅。SRAM用にはスキニーDIP28ピン300mil幅、TSOP32ピン、SOP32ピンの3種のフットプリントをパラでつなげました。SRAMに関しては排他的でどれか1個のパタンしか使えません。電…