Z80ここんところ、SourceForgeへのCVS接続がうまく動かない障害にずっと悩まされていて放置プレイだったのですが、久しぶりにContikiのメンテナンスをはじめてみました。一応私は、Z80全般およびPC-6001部分のソースが担当になっています。Z80P6絡みののりさんが、ROM乗せかえ(実際にはエミュレータ上のBIOSイメージ入れ替え)によるフリーのPC-6001実行環境を開発しています。私も以前、実機のROMを外して別のROMやRAMに変えられるのではないかと妄想していましたが、それをエミュレータ上でやってしまおうということですね。Z80性懲りもなくPSGPCMと格闘しています。PSGによるPCM再生は、以前11kHz/9ビット相当の比較的高音質の再生を成功させましたが、マシンパワーおよびメモリを非常に消費する方法でした。Z80ラッチを使ってZ80との入出力ができることがわかったので、修正した回路図です。Webページに収まるようになるべく小さく描いたので見にくいのはご勘弁。Z80とりあえず、前回のテストは期待通りの動作をさせることができました。原因はあちらこちらの断線でした。UEWを使っていて、しょっちゅう回路を変更するものだから、そのたびに線をいじったりしているうちに断線してしまっているのでした。直しては他の箇所が断線するいたちごっこ状態。Z80I/O回路の要求には高速応答性が必要で、到底AVRの割り込み反応時間では間に合わないことがわかったので、バッファを入れる実験をしました。例により、簡略化した回路です。手持ちのラッチがLS373しかなかったので、電圧が混在しています。Z80Z80からのI/O信号に対し、どのくらいでAVRによる割り込み反応が得られるのかを調査してみました。回路は前回作ったものを使います。PC-6001側からI/O命令を発行し、AVRの外部割込み入力をトリガにして反応を調べます。大きな間違いに気づいてショックな今日この頃。XC9536XL)があるのでそれでやってみようと思うのですが、困ったことにライタがありません。Z80以前設計した回路には、重大な盲点がありました。以前の設計では、割り込み要求は次のようにしていました。sdccには基本的な標準ライブラリが入っています。Z80いま、PC-6001のPSGでPCM再生を試みています。全体的にかなりいい感じで進んではいるのですが、クロック計算がなかなか合わないというのが困りものです。カタログ上のPC-6001のクロック周波数は3,993,600Hzです。カードリーダをプリンタポートに接続する場合のコードを考えてみました。昔のパソコンの大部分は入力がBUSY信号のみですが、幸いなことにSPIで必要とする入力信号は1本なので、これで間に合います。第1回で説明したように、ジョイスティックポートからのデータ入力はかなり手間がかかります。高速化は最もたくさん実行する部分から行うのが定石なので、心臓部であるバイト入力をする部分を最適化するのが最も効果的です。sdccのCコンパイラの出力コードの効率があまりりよくないことはお話しました。そのため、インラインアセンブルを使うことも多いでしょう。インラインアセンブルの利用は、他のコンパイラ同様、以下のような利点があります。sdccでは他のCコンパイラと同様、ライブラリを作って、それをリンクすることができます。ここでは、通常のスタティックリンクと、外部プログラムとリンクするテクニックについて説明します。sdccを使うことによりC言語でプログラムが可能になりますが、実際にはアセンブリ言語と一緒に使うことが多いと思います。UNIXやWindows環境で利用できるフリーのZ80対応クロスC言語コンパイラとして、現在利用可能なのはSDCCくらいしかありません。旅行記レビューニュースTinyCoreMovableTypePC-6001Aboutこのブログはクリエイティブ・コモンズでライセンスされています。