標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第822回]
●電子サイレンプログラム
MYCPU80については久々の更新です。
前回([第821回])を書きましたのは今年(2011年)7月17日ですからかれこれ5ヶ月ぶりということになります。
その間はずっとリナックス(Ubuntu)パソコン組立キットかかりっきりになっていました。
MYCPU80も予想していたよりも沢山の方に購入していただきましたし、今もときどき新しい方からご注文をいただきます(実は今も1セットご注文をいただいて、納品に向けて作業中です)ので、しっかりフォローしなければならないのですけれど、戦線を拡大しすぎてしまいましたので、なかなか思うにまかせません。
気長にお付き合いをお願いいたします。
さて今回は、TK−80用に書かれた「電子サイレンプログラム」をND80ZV用に書き直したことを受けまして、さらにそれをMYCPU80用に書き直しましたので、そのご報告です。
電子サイレンプログラムにつきましては、「ワンボードマイコンをつくろう!」[第128回]から[第130回]をお読みいただいてから、今回をお読みいただきますと、お話がスムーズにつながります。
TK−80とND80ZVとではスピーカ出力のためのハードウェア回路が異なっていて、I/Oアドレスや出力ビットが違うために、その部分を書き直さなければなりません。
ND80ZVとMYCPU80とは、スピーカ出力回路のI/Oアドレスは同じなのですが、出力ビットが異なるために、やはり書き直しが必要です。
TK−80はCPUクロックが約2MHzであったのに対してND80ZVは6MHzですから、音の周波数を作成するところをクロックに合わせて書き直す必要がありました。
しかしMYCPU80のクロックは2MHzですから、そのところはオリジナルと同じままでいけます。
下のリストはND80ZV用に書き直した「電子サイレンプログラム」をさらにMYCPU80用に変更したものです。
これはメモ帳で書いた8080アセンブラのソースプログラムリストです。
;;; SIREN from "maikon nyumon" for MYCPU80 ;;; ;;; 11.12.8 12.10 ; ORG $8200 ; START:MVI B,50 LOOP1:CALL OUTSB DCR B MOV A,B CPI 40 JNZ LOOP1 LOOP2:CALL OUTSB INR B MOV A,B CPI 50 JNZ LOOP2 JMP LOOP1 ; OUTSB:MVI A,14 ;TK-80 02 OUT 98 ;TK-80 02 CALL WAIT MVI A,04 ;TK-80 00 OUT 98 ;TK-80 02 CALL WAIT DCR C JNZ OUTSB RET ; WAIT:PUSH B WAIT2:DCR B JNZ WAIT2 POP B RET ; |
2011/12/10 11:14 siren_4.txt
END=8232
;;; SIREN from "maikon nyumon" for MYCPU80
;;;
;;; 11.12.8 12.10
;
ORG $8200
;
8200 0650 START:MVI B,50
8202 CD1982 LOOP1:CALL OUTSB
8205 05 DCR B
8206 78 MOV A,B
8207 FE40 CPI 40
8209 C20282 JNZ LOOP1
820C CD1982 LOOP2:CALL OUTSB
820F 04 INR B
8210 78 MOV A,B
8211 FE50 CPI 50
8213 C20C82 JNZ LOOP2
8216 C30282 JMP LOOP1
;
8219 3E14 OUTSB:MVI A,14 ;TK-80 02
821B D398 OUT 98 ;TK-80 02
821D CD2C82 CALL WAIT
8220 3E04 MVI A,04 ;TK-80 00
8222 D398 OUT 98 ;TK-80 02
8224 CD2C82 CALL WAIT
8227 0D DCR C
8228 C21982 JNZ OUTSB
822B C9 RET
;
822C C5 WAIT:PUSH B
822D 05 WAIT2:DCR B
822E C22D82 JNZ WAIT2
8231 C1 POP B
8232 C9 RET
;LOOP1 =8202 LOOP2 =820C OUTSB =8219
START =8200 WAIT =822C WAIT2 =822D
|
●8080アセンブラを改良しました
MYCPU80組立キットに附属している8080アセンブラ(ASM80.COM)は、ND80ZV組立キットにも附属しています。
ND80ZVに附属しているASM80.COMの方がバージョンが新しくなっています。
MYCPU80に附属している8080アセンブラはアセンブルリストが画面に表示されて、リストファイルは作成されません。
ND80ZVに附属の8080アセンブラは逆に画面にはリストが表示されず、その代わりにリストファイルが作成されます。
それだけではなくて、MYCPU80に附属の8080アセンブラは、マシン語プログラムをMYCPU80に送信するために、先頭にアドレス情報をつけたうえで16進コードをASCIIに変換したファイル(拡張子HTX)を作成しますが、ND80ZVに附属の8080アセンブラはND80ZVに送信するために、先頭にアドレス情報をつけたバイナリファイル(拡張子BTK)を作成します。
今回のはじめのところにも書きましたように、この一年余りはほとんどパソコン組立キットにかかりっきりでしたので、MYCPU80組立キットとND80ZV組立キットに附属している8080アセンブラは、それぞれ別のソフトウェアのままになっておりました。
しかし今回、ND80ZV用とMYCPU80用にそれぞれソースプログラムを作成して、それを別々の8080アセンブラにかけなければならない(しかもプログラム名は同じASM80.COM)という作業を実際にやってみて、これはなんとかしなければ、と遅まきながら痛感いたしました。
そこで本日は半日余りを費やして、両ASM80.COMの合体作業を行ないました。
ND80ZVに附属しているASM80.COMの方が後から作成してバージョンが上ですからそれをもとにして、MYCPU80用の通信形式ファイル(拡張子HTX)も作成するようにプログラム変更を行ないました。
改良したASM80.COMを実行して、電子サイレンプログラムのソースプログラム(SIREN_4.txt)から生成されたファイルです。

今までND80ZV組立キットに附属していたASM80.COMではバイナリファイル(.bin)、ND80ZV用通信形式ファイル(.btk)、アセンブラリストファイル(.lst)が作成されていましたが、今回の改良によって、MYCPU80用通信形式ファイル(.htx)も作成されるようになりました。
*** 今までにMYCPU80をご購入いただいたお客様へのお知らせです ***
今までにMYCPU80をご購入いただいたお客様には、今回バージョンアップした8080アセンブラASM80.COMをご希望でしたら、メール添付にてお送りいたします。
メールをお送りいただきましたら、返信メールにて添付させていただきます(もちろん無償です)。
現行バージョンでは、アセンブルリストを保存するためには、画面出力をファイル出力に切り換えるためのパイプ出力を指定してASM80.COMを実行する必要がありましたが、新しいバージョンではアセンブラリストが画面に表示される代わりにリストファイルが作成されます。
またMYCPU80とND80ZVの両方をご購入いただいたお客様の場合には、これまでのようにそれぞれのASM80.COMを使い分ける必要がなくなります。
2011.12.10upload
前へ
次へ
ホームページトップへ戻る