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

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第305回]


●プログラムをロード中の写真

前回説明しました普通のPloglam Loaderを使ってプログラムをロードするところを写真に撮りました。
やっぱり言葉だけで説明するよりも写真や図などを使ったほうが分かりやすいと思います。
ですけれど、準備するのに手間がかかります。

電源を入れた直後の写真です。

パワーオンリセット回路が働いて、電源ONと同時にCPUがリセットされて0000Hから実行が開始されます。
RAMの0000Hには[第300回]で説明しましたサンプルプログラムが入っています。
電ONと同時にそのサンプルプログラムが実行されます。
左下のPROGRAMMED INPUTスイッチから入力された値が左上のPROGRAMMED OUTPUTに表示されています。

STOPスイッチを押しました。

ちょうどアドレス0000Hで停止しました。

Program Loaderを実行するために、パネルスイッチに7F80Hを設定して、READスイッチを押しました。

アドレス7F80HがアドレスLEDに表示されて、データバスLEDには7F80Hのメモリ内容が表示されました。

RUNスイッチを押しました。

Program Loaderが実行され、USB経由でWindowsパソコンから送られてくるプログラムデータをPIC18F14K50から受け取る態勢でループしています。
プログラムは7F85Hから7F9FHの間でループしていますから、アドレスLEDには7F9FHが明るく表示され、A5、A6のビットも薄く点灯しています。
ここで前回説明しましたように、パソコン側からHIDWRを実行します。
HIDWRは瞬時に実行を終了します。
送信されたプログラムはメモリにロードされたはずですから、それを確かめてみます。

STOPスイッチを押しました。

アドレス7F9EHで停止しました。

アドレススイッチに8000Hを設定してREADを押しました。

8000Hのメモリの値がデータバスLEDに表示されました。
31Hと表示されています。

●Program Loaderでロードしたプログラム

アドレス8000H番地にロードしたプログラムのリストです。

2013/1/27  21:21  music4b2.txt
END=80EC
              ;;; music 09/10/9 10/10 10/12 10/15 
              ;;;
              ;;;MUSIC from MYCPU80 MUSIC
              ;10/6/4 6/5 6/15 for ND80Z3 CLK=6MHz
              ;7/20 9/24
              ;12/11/27 for E-80 clock?
              ;13/1/27
              ;
              	ORG $8000
              ;
              	SPEED=$EFFF
              	REPEAT=$EFFE
              	MAE=$EFFD
              	DATA=$8100
              ;
8000 310000   START:LD SP,$0000
8003 3E88     	LD A,88;A=out,B=out,CH=in,CL=out
8005 D3FB     	OUT (FB),A
8007 3E03     	LD A,03
8009 32FFEF   	LD (SPEED),A
800C 210081   	LD HL,DATA
800F 3AFDEF   SND1:LD A,(MAE)
8012 4F       	LD C,A
8013 7E       SND11:LD A,(HL)
8014 FEFF     	CP FF
8016 CA0080   	JP Z,START
8019 B7       	OR A
801A CA7680   	JP Z,YASUMI
801D FE1E     	CP 1E
801F DA2780   	JP C,SND12
8022 23       	INC HL
8023 23       	INC HL
8024 C31380   	JP SND11
8027 F5       SND12:PUSH AF
8028 B9       	CP C
8029 CC9480   	CALL Z,T5MS
802C 23       	INC HL
802D 46       	LD B,(HL)	;NAGASA
802E 23       	INC HL	
802F F1       	POP AF
8030 E5       	PUSH HL
8031 21B180   	LD HL,SNDTBL
8034 87       	ADD A,A
8035 5F       	LD E,A
8036 1600     	LD D,00
8038 19       	ADD HL,DE
8039 56       	LD D,(HL)
803A 23       	INC HL
803B 5E       	LD E,(HL);KURIKAESI KAISU
803C 3AFFEF   	LD A,(SPEED)
803F 6F       	LD L,A
8040 60       	LD H,B
8041 7B       	LD A,E
8042 32FEEF   	LD (REPEAT),A
              ;
8045 4A       SNDS1:LD C,D
8046 3E03     	LD A,03         ;sp out=H (pc1=H)
8048 D3FB     	OUT (FB),A
804A E5       SNDS2:PUSH HL           ;DUMMY CLK=11
804B E5       	PUSH HL         ;DUMMY CLK=11
804C E1       	POP HL          ;DUMMY CLK=10
804D E1       	POP HL          ;CLK=10
804E 00       	NOP             ;CLK=4
804F 0D       	DEC C           ;CLK=4
8050 C24A80   	JP NZ,SNDS2     ;CLK=10
8053 4A       	LD C,D
8054 3E02     	LD A,02		;sp out=L (pc1=L)
8056 D3FB     	OUT (FB),A
8058 E5       SNDS3:PUSH HL		;DUMMY CLK=11
8059 E5       	PUSH HL		;DUMMY CLK=11
805A E1       	POP HL		;DUMMY CLK=10
805B E1       	POP HL		;CLK=10
805C 00       	NOP		;CLK=4
805D 0D       	DEC C		;CLK=4
805E C25880   	JP NZ,SNDS3	;CLK=10
8061 1D       	DEC E
8062 C24580   	JP NZ,SNDS1
8065 3AFEEF   	LD A,(REPEAT)
8068 5F       	LD E,A
8069 05       	DEC B
806A C24580   	JP NZ,SNDS1
806D 44       	LD B,H
806E 2D       	DEC L
806F C24580   	JP NZ,SNDS1
8072 E1       	POP HL
8073 C30F80   	JP SND1
              ;;;
8076 23       YASUMI:INC HL
8077 46       	LD B,(HL)	;NAGASA
8078 23       	INC HL
8079 E5       	PUSH HL
807A 3AFFEF   	LD A,(SPEED)
807D 6F       	LD L,A
807E 60       	LD H,B
807F CD9980   YASUMI2:CALL T40MS
8082 05       	DEC B
8083 C27F80   	JP NZ,YASUMI2
8086 44       	LD B,H
8087 2D       	DEC L
8088 C27F80   	JP NZ,YASUMI2
808B E1       	POP HL
808C C30F80   	JP SND1
              ;;;
808F 23       ERROR:INC HL
8090 23       	INC HL
8091 C30F80   	JP SND1
              ;
8094 0E05     T5MS:LD C,05
8096 C39B80   	JP T40MS2
              ;
8099 0E28     T40MS:LD C,28		;=40
809B CDA380   T40MS2:CALL T1MS
809E 0D       	DEC C
809F C29B80   	JP NZ,T40MS2
80A2 C9       	RET
              ;
80A3 F5       T1MS:PUSH AF		;CK=11....11+7+10+10+10=48/6(8microsec)
80A4 3E5F     	LD A,5F		;=99  CK=7
80A6 E5       T1MS2:PUSH HL;DUMMY CLK=11-----------------
80A7 E5       	PUSH HL;DUMMY CLK=11               |
80A8 E1       	POP HL;DUMMY CLK=10                |CK=60/6(10microsec)
80A9 E1       	POP HL;DUMMY CLK=10                |
80AA 00       	NOP ;CLK=4                         |
80AB 3D       	DEC A		;CK=4        |10x99=990microsec
80AC C2A680   	JP NZ,T1MS2	;CK=10---
80AF F1       	POP AF		;CK=10
80B0 C9       	RET		;CK=10 + CALL CK=10
              ;
              ; SOUND TABLE
80B1 00       SNDTBL:DB 00;DUMMY
80B2 00       	DB 00;DUMMY
80B3 7F       	DB 7F;so4
80B4 10       	DB 10
80B5 77       	DB 77;so#4
80B6 11       	DB 11
80B7 71       	DB 71;ra4
80B8 12       	DB 12
80B9 6A       	DB 6A;ra#4
80BA 13       	DB 13
80BB 64       	DB 64;si4
80BC 14       	DB 14
80BD 5F       	DB 5F;do5
80BE 15       	DB 15
80BF 59       	DB 59;do#5
80C0 16       	DB 16
80C1 54       	DB 54;re5
80C2 18       	DB 18
80C3 4F       	DB 4F;re#5
80C4 19       	DB 19
80C5 4B       	DB 4B;mi5
80C6 1A       	DB 1A
80C7 47       	DB 47;fa5
80C8 1C       	DB 1C
80C9 43       	DB 43;fa#5
80CA 1E       	DB 1E
80CB 3F       	DB 3F;so5
80CC 1F       	DB 1F
80CD 3B       	DB 3B;so#5
80CE 21       	DB 21
80CF 38       	DB 38;ra5
80D0 23       	DB 23
80D1 35       	DB 35;ra#5
80D2 25       	DB 25
80D3 32       	DB 32;si5
80D4 27       	DB 27
80D5 2F       	DB 2F;do6
80D6 2A       	DB 2A
80D7 2C       	DB 2C;do#6
80D8 2C       	DB 2C
80D9 2A       	DB 2A;re6
80DA 2F       	DB 2F
80DB 27       	DB 27;re#6
80DC 32       	DB 32
80DD 25       	DB 25;mi6
80DE 35       	DB 35
80DF 23       	DB 23;fa6
80E0 38       	DB 38
80E1 21       	DB 21;fa#6
80E2 3B       	DB 3B
80E3 1F       	DB 1F;so6
80E4 3F       	DB 3F;
80E5 1D       	DB 1D;so#6
80E6 43       	DB 43;
80E7 1B       	DB 1B;ra6
80E8 47       	DB 47;
80E9 1A       	DB 1A;ra#6
80EA 4A       	DB 4A;
80EB 18       	DB 18;si6
80EC 50       	DB 50;
              ;END
DATA         =8100  ERROR        =808F  MAE          =EFFD  
REPEAT       =EFFE  SND1         =800F  SND11        =8013  
SND12        =8027  SNDS1        =8045  SNDS2        =804A  
SNDS3        =8058  SNDTBL       =80B1  SPEED        =EFFF  
START        =8000  T1MS         =80A3  T1MS2        =80A6  
T40MS        =8099  T40MS2       =809B  T5MS         =8094  
YASUMI       =8076  YASUMI2      =807F  

このプログラムはND80ZV(ND80Z3.5)の付属CDROMに入っているサンプルプログラムです。
別に用意する曲データをメモリの8100Hから書き込んだ上で8000Hから実行すると、スピーカーからその曲が出力されます。
古典的な電子オルゴールプログラムです。
ND80ZV(ND80Z3.5)とE−80(仮称)ミニコンとではスピーカー出力をするI/Oアドレスが異なりますから、そのところだけを変更してあります。
あとはND80ZV(ND80Z3.5)に付属しているプログラムと同じです。

さて。
そういうことになりますと、今度は曲データもロードすることになります。

毎回細切れ状態で申し訳ありません。
本日も時間がなくなってしまいました。
続きはまた次回にすることにいたします。

ワンボードマイコンでCP/Mを![第305回]
2013.1.30upload

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