SBCZ80ルーズキットの製作(8MHz動作編)

2020/09/25

 10MHz高速版のSIOが届きました。



まず8MHzで動作させましたが、問題なく動きました。ただ、DRAMのアクセスタイムが100nS必要で、オーバークロックになっています。ASCIIART.BASの速度は、速いのは速いのですが、それほど体感速度が出ませんでした。Z80は、結構クロック数を必要としますので、仕方がない気もします。


10MHz版のSIOには、オーバークロックになりますが、16MHzを試してみました。残念ながら動作しませんでした。スペックを確認すると、16MHzの場合、DRAMとEEPROMのアクセスタイムが70~80nSが必要なようで、今回は共に150nSでしたので、当たり前みたいです。

(再クロール更新:2022/12/22)

SBCZ80ルーズキットの製作(シリアルハンドシェーク編)

2020/09/24

 GRANTBASで、ASCIIART.BASを走らそうとしましたが、TeraTermでプログラムをペーストすると、シリアルポート入力の取りこぼしが発生しました。


TeraTermのフロー制御を"hardware"にしましたが、改善しませんでした。GRANTBAS.ASMの確認を行うと、RTSのハンドシェークがされていませんでした。下記のような、修正を行ったところ、問題なくペーストできるようになりました。大きなプログラムでは、必須な機能ですので、必要な方は、修正をお勧めします。


修正内容は、入力バッファの残りが4文字より少ない場合、RTSをINACTIVEに、入力バッファ中の文字数が4文字以下の場合。RTSをACTIVEにしています。

【修正前①】
; CHECK BUFFER FULL
LD A,(RBFCNT)

【修正後①】
; CHECK BUFFER HIGH
LD A,(RBFCNT)
CP RBFSIZ-4
JP M,CHKFUL
LD A,005H ; WR5
OUT (PSIOAC),A
LD A,0E8H ; RTS INACTIVE
OUT (PSIOAC),A
; CHECK BUFFER FULL
CHKFUL: LD A,(RBFCNT)

【修正前②】
; READ DATA
LD A,(RBFCNT)

【修正後②】
; CHECK BUFFER LOW
CP 4
JP P,RDDAT
LD A,005H ; WR5
OUT (PSIOAC),A
LD A,0EAH ; RTS ACTIVE
OUT (PSIOAC),A
LD A,(RBFCNT)
; READ DATA
RDDAT: LD A,(RBFCNT)

なお、ZTB.ASMも同様です。

(再クロール更新:2022/12/22)

SBCZ80ルーズキットの製作(ファームウェア編)

2020/09/22

 SBCZ80の改造で使用したPIC12F1822のファームウェアの紹介です。


今回は盛りだくさんになったため、全部ピン使用することになりました。

①シリアルインタフェース用クロック信号

②CPUクロック信号

③CPUリセット信号

④DRAMリフレッシュ用NMI信号


このPIC12F1822は、低価格で入手できます。秋月電子通商では、現在1個 ¥110(税抜き)で販売されています。ファームウェアを開発したり、書き込みしたり手間はかかりますが、その柔軟性に魅力があります。


今回、参照クロック、PWM、Timer0、Timer1各モジュールを使用しましたが、利用パターンに慣れると、結構簡単に利用できます。ただ、各モジュールで利用可能なピンの制約がある点に注意する必要があります。

PIC12F1822のファームウェアのソースコードを公開しますので、自己責任で自由に利用ください。なお、2MHz/4MHz/8MHz各CPUクロックのHEXファイルも同梱していますので、必要に応じ活用ください。


ちなみに、CPUクロック4MHz版は、Z80Aの4MHzに最適で、シリアルインタフェース用クロックと合わせて使用をお勧めします。シリアル速度自動設定が不要な場合は、5ピン(RXD)は、未配線にしておいてください。


DRAMリフレッシュ用NMI信号は、48KBにDRAM拡張する場合に使用したら良いかと思います。CPUリセット信号は、CPUリセット不良が発生するCPUとSIOの相性が悪い場合に利用ください。4ピン(PWR)に入れる直列抵抗は、ICSP(インサーキットプログラミング)しないのであれば、不要です。


この機会にICSP経由のソケットアダプタを製作しPICkit3との組み合わせて使いました。


下記は、電源投入時のPWR、~RST、~NMI、SIOのRTSの波形です。


次は、リセットボタン使用時のPWR、~RST、~NMI、SIOのRTSの波形です。


(再クロール更新:2022/12/22)