2011.12.10
前へ
次へ
ホームページトップへ戻る




標準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
;

これをMYCPU80組立キットに附属の8080アセンブラにかけると、8080のマシン語ファイルが作成されます。
下はマシン語ファイルの作成時に出力されるアセンブルリストです。

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アセンブラ(ASM80.COM)を実行したあと、そこで作成された送信用ファイルをUSB送信プログラムW232.exeでMYCPU80に送信しているところです。



USBを通じてMYCPU80に電子サイレンプログラムがLOADされました。




●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

前へ
次へ
ホームページトップへ戻る