Z80-MBCの新ファームを試してみる

先日、Z80-MBCでPSGを鳴らした後、何気にZ80MBCの本家サイトをのぞいてみたら新しいファームウエア(S221116_R050720_Z80.ino)がリリースされていたようである。

ちなみにZ80-MBC2に手を出さないのは、I/Oが自由に使えなさそうだから。
回路図を見るとアドレスバスのA0だけがATMEGA32につながっていて、どうやってDMA転送とかI/O制御とかやっているのかわからない。

それはともかく新しいファームウエアではEEPROM4つで4ドライブ使えるようになったらしい。
元の構成ではEEPROMの容量が心許ない感じだったので早速試してみる。

まずはダウンロードしたファームウエアをそのままArduinoで焼いてみることにする。
シリアルの通信速度が変わっているので注意。
新しいファームでは、9,600bpsではなく38,400bpsなのでTeraTermの設定も直す。
起動してみた結果、全然使い物にならない。
CP/Mの起動が極端に重い。
DIRコマンドでファイル名1個づつ表示され非常に遅い。
MBASICを立ち上げようとしたら、固まってしまったかと思うくらい時間がかかる。
どうもディスクアクセスがうまくいってないようだ、

S221116_R050720_Z80.inoのソースをのぞいてみる。
どうもI2Cの通信速度もいじっているようだ。
ソースを見ると、I2Cの速度を800KHzに対応したようだが、肝心のEEPROMは400KHzまでしか対応していない。
何となく原因が分かったので、ソースを一部修正する。

修正前 145行目

// ------------------------------------------------------------------------------
//
// Hardware definitions for A110417 (Virtual Disk Module)
//
// ------------------------------------------------------------------------------

#define EEPROM_TWBR (((F_CPU/800000)-16)/2)	// set I2C rate

修正後

// ------------------------------------------------------------------------------
//
// Hardware definitions for A110417 (Virtual Disk Module)
//
// ------------------------------------------------------------------------------

//#define EEPROM_TWBR (((F_CPU/800000)-16)/2)	// set I2C rate
#define EEPROM_TWBR (((F_CPU/400000)-16)/2)	// set I2C rate

ついでにI/O部分も直す。
修正前 2330行目

      }
      DDRA = 0xFF;					// Configure Z80 data bus D0-D7 (PA0-PA7) as output
      PORTA = ioData;					// Current output on data bus

      // Control bus sequence to exit from a wait state (M I/O read cycle)

修正後

      }

      if (ioAddress <= 0x0f)
      {
        DDRA = 0xFF;                               // Configure Z80 data bus D0-D7 (PA0-PA7) as output
        PORTA = ioData;                            // Current output on data bus
      }

      // Control bus sequence to exit from a wait state (M I/O read cycle)

修正したら問題なく動くようになった。
82C55ボードをつないでI/Oの読み書きもできる。
早速、追加のEEPROMをつなげるための基板を作る。

秋月でEEPROMなど買ってきて基板を組む。
最初、Z80-MBCの基板上に組みたかったなと思ったが、よくよく考えるとこれなら必要に応じて取り換えて使うこともできるなと思いなおす。

増設したEEPROMはつないだだけでは認識されず、BASICでパッチをあてる必要がある。
パッチは、Z80-MBCのGitHubの中にあって、patchの下にpatch1.basがあるのでそれをMBASICで実行すればよい。

実行すると、C:とD:が見えるようになる。

見えるようになるのだが、どうもそのままでは使えないようだ。

何気にformat.comがリリースされているが、formatが必要なのかな。
pcgetやpcputもリリースされているし、まだ準備が必要らしい。

ちなみに、パッチはZ80-MBCを起動するたび毎回実行が必要なようだ。
なんとかならんのかな。
ググっても情報全然ない・・・

カテゴリー: Arduino, Z80-MBC, 電子工作 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください