<p>Super AKI-80のプチ改造と動作確認2018年04月03日 17:00

CP/Mマシンに仕立て上げるために入手しておいた秋月電子の"Super AKI-80"を放置したままになっていたので、 気分転換と、新調した半田ごての具合を見ようと、プチ改造を行い練習プログラムを 作成してみました。

"Super AKI-80"のプチ改造は、不要な3端子レギュレーターとRAMのバッテリー・バックアップ回路のダイオード 2個を 取り去り、レギュレーターの所には電源接続用のピンヘッダーを付け、ダイオードがあったところは、ジャンパー線で パッチを当てました。ついでに電源の確認用にLEDを取り付けました。それにしても、汚い半田付けだなぁ。寄る年波のせいか、 手元がよく見えなくて、作業用のルーペが欲しくなりました。

改造後の"Super AKI-80"は、この様になりました。 Super AKI-80(プチ改造)

それと、取り外したパーツです。 取り外したパーツ

練習プログラムは、おなじみ、"HELLO WORLD"です。ずいぶん長いことZ-80から離れていたので、 完全に初心者並みです。添付のサンプル・プログラムと格闘して、なんとか"Hello, World"を表示できました。 ちなみに、コンソールはOS/2付属の"Hyper ACCESS Lite"です。 HELLO WORLD

お次は、キーインした文字をそのまま書く"ECHO"です。 ECHO

"Hyper Access Lite"で、ローカル・エコーバックをオンにして見ると、きちんと入力文字がエコーバック されています。当然ですね。 ECHO その2

以前、CP/Mエミュレータで作り込んどいたモニタープログラム(これは、Intelニーモニックで書かれている。)の コンソールI/OをSuper AKI-80用に書き換えて(Zilogニーモニックを Intelニーモニックに書き換えて)動かす 予定です。

それにしても、Z-80 SIO/0は高機能なんだけど、使い方を思い出すまで、大変でした。

まな板の上のSuper AKI-802018年04月17日 08:40

Super AKI-80の基本的な動作確認が終わったので、以前に書きためたモニターを移植してみました。 元々はCP/Mで動作するように書いてあるが、基本的なコンソールI/Oしか使ってないので、 比較的簡単に移行できると踏んでいたのですが、アセンブラー初心者程度にまで基本を忘れているので、 基本機能を確認できるようになるまでは、「あれ?なんで?」の連続でした。なんとか無事に移行できました。 この様になりました。 モニター

適当に動き出すと欲が出る物です。「マイクロコンピュータのプログラミング 石田晴久編」 マイクロコンピュータのプログラミング を引っ張りだし、掲載されているTiny Basicを動かそうと企みました。動くことは動くのですが、バグがとれず、 苦しんだ末、「Office Tetsu」(http://www.amy.hi-ho.ne.jp/officetetsu/sbc/index.html)にあった CP/M版のTiny Basicを引用させていただきました。「Office Tetsu」様、ありがとうございます。

Super AKI-80に合うよう、初期化ルーチンを追加し、コンソールI/Oを組み替え、無事、Tiny Basicが動きました。 Tiny Basic動作中 これで、Super AKI-80の動作確認を完了としました。

CP/Mの移植につて考えながらSuper AKI-80をいじってみて、Super AKI-80に適当な改造をする必要があるのが、 分かりました。CP/Mを動かすには、以下の点を考慮する必要があります。

  1. アドレス0000HからRAMにするため、RAMを追加する必要がある。
  2. 追加したRAMとROMを切り替える機能を追加する必要がある。(いわゆるバンク切り替え)
  3. Disketteを使うために、FDCを追加する必要がある。

以上のことを実現するためには、別基板にH/Wを組み立てる事になります。このため、Super AKI-80から アドレスバスとコントロールバスを引き出す必要があるのですが、アドレスはA0からA7までしか出ておらず、 しかもコネクターに空きがないのです。引っ張り出すには、コネクターの所でパターンを一部カットしなければ なりません。気乗りしません。でも、いつかは実行するのだろうなぁ。

MACよ、君は正しかった。2018年04月19日 19:53

ROMライター Leaper-3

Super AKI-80に搭載したモニタ-ープログラムは、Digital ReserchのMACを使ってアセンブルしていました。 ROMにプログラムを焼く時は、秋月電子で購入した、Leaper-3(パラレルポートで使用するタイプ)を使っています。 MACでアセンブルしたままのHEXファイルだと、ライターにファイルを読み込む時に、いつもエラーになります。 ファイルを見てみると、最後のレコードに問題があるのがわかりました。最後のレコードがいつも、

          :0000000000
になってしまいます。正しくは、EOFを示す
          :00010000FF
になるはずなのですが。理由が分からないし、時間もなかったので、エデイターで、毎回、書き直していました。

今日、MACのマニュアル"CP/M MACRO ASSEMBLER LANGUAGE AND APPLICATIONS GUIDE (Revision of Novenver 1980)"に掲載されているサンプルプログラムを 眺めていて、何か違うなと。サンプルプログラムは、下記のようになっています。

                      org      100h        ;transient program area
          bdos        equ      0005h       ;bdos entry point 
          wchar       equ      2           ;write character function
          
          ;enter with ccp's return address in the stack
          ;write a single character(?) and return
                      mvi      C,wchar     ;write character function
                      mvi      e,'?'       ;character to write
                      call     bdos        ;rwrite character
                      ret                  ;return to the cpp
                      end      100h        ;start address is 100h
END文に開始アドレスが書いてあります。これをアセンブルして出来上がったHEXファイルは、
          :080100000E021E3FCD0500C9EF
          :00010000FF
と、正しくEOFレコードを書き出しています。

END文から開始アドレスを削除してアセンブルすると、

          :080100000E021E3FCD0500C9EF
          :0000000000
見事、これまでの状態が再現されました。ここでした。END文に開始アドレスを付けるのが正解でした。

「MACよ、君は間違っていなかった。 間違っていたのは、わたしの方だった。」とつぶやきながら、納得しました。

マニュアルを疎かにしてはいけないと、肝に銘じた一件でした。