<p>Super AKI-80のプチ改造と動作確認 ― 2018年04月03日 17:00
CP/Mマシンに仕立て上げるために入手しておいた秋月電子の"Super AKI-80"を放置したままになっていたので、 気分転換と、新調した半田ごての具合を見ようと、プチ改造を行い練習プログラムを 作成してみました。
"Super AKI-80"のプチ改造は、不要な3端子レギュレーターとRAMのバッテリー・バックアップ回路のダイオード 2個を 取り去り、レギュレーターの所には電源接続用のピンヘッダーを付け、ダイオードがあったところは、ジャンパー線で パッチを当てました。ついでに電源の確認用にLEDを取り付けました。それにしても、汚い半田付けだなぁ。寄る年波のせいか、 手元がよく見えなくて、作業用のルーペが欲しくなりました。
改造後の"Super AKI-80"は、この様になりました。
それと、取り外したパーツです。
練習プログラムは、おなじみ、"HELLO WORLD"です。ずいぶん長いことZ-80から離れていたので、
完全に初心者並みです。添付のサンプル・プログラムと格闘して、なんとか"Hello, World"を表示できました。
ちなみに、コンソールはOS/2付属の"Hyper ACCESS Lite"です。
お次は、キーインした文字をそのまま書く"ECHO"です。
"Hyper Access Lite"で、ローカル・エコーバックをオンにして見ると、きちんと入力文字がエコーバック
されています。当然ですね。
以前、CP/Mエミュレータで作り込んどいたモニタープログラム(これは、Intelニーモニックで書かれている。)の コンソールI/OをSuper AKI-80用に書き換えて(Zilogニーモニックを Intelニーモニックに書き換えて)動かす 予定です。
それにしても、Z-80 SIO/0は高機能なんだけど、使い方を思い出すまで、大変でした。
まな板の上のSuper AKI-80 ― 2018年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が動きました。
これで、Super AKI-80の動作確認を完了としました。
CP/Mの移植につて考えながらSuper AKI-80をいじってみて、Super AKI-80に適当な改造をする必要があるのが、 分かりました。CP/Mを動かすには、以下の点を考慮する必要があります。
- アドレス0000HからRAMにするため、RAMを追加する必要がある。
- 追加したRAMとROMを切り替える機能を追加する必要がある。(いわゆるバンク切り替え)
- Disketteを使うために、FDCを追加する必要がある。
以上のことを実現するためには、別基板にH/Wを組み立てる事になります。このため、Super AKI-80から アドレスバスとコントロールバスを引き出す必要があるのですが、アドレスはA0からA7までしか出ておらず、 しかもコネクターに空きがないのです。引っ張り出すには、コネクターの所でパターンを一部カットしなければ なりません。気乗りしません。でも、いつかは実行するのだろうなぁ。
MACよ、君は正しかった。 ― 2018年04月19日 19:53

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 100hEND文に開始アドレスが書いてあります。これをアセンブルして出来上がったHEXファイルは、
:080100000E021E3FCD0500C9EF :00010000FFと、正しくEOFレコードを書き出しています。
END文から開始アドレスを削除してアセンブルすると、
:080100000E021E3FCD0500C9EF :0000000000見事、これまでの状態が再現されました。ここでした。END文に開始アドレスを付けるのが正解でした。
「MACよ、君は間違っていなかった。 間違っていたのは、わたしの方だった。」とつぶやきながら、納得しました。
マニュアルを疎かにしてはいけないと、肝に銘じた一件でした。
最近のコメント